共用方式為


WIA_PROPERTY_INFO結構(wiamindr_lh.h)

WIA_PROPERTY_INFO 結構可用來儲存任意類型之專案屬性的預設存取和有效值資訊。

語法

typedef struct _WIA_PROPERTY_INFO {
  ULONG   lAccessFlags;
  VARTYPE vt;
  union {
    struct {
      LONG Min;
      LONG Nom;
      LONG Max;
      LONG Inc;
    } Range;
    struct {
      DOUBLE Min;
      DOUBLE Nom;
      DOUBLE Max;
      DOUBLE Inc;
    } RangeFloat;
    struct {
      LONG cNumList;
      LONG Nom;
      BYTE *pList;
    } List;
    struct {
      LONG   cNumList;
      DOUBLE Nom;
      BYTE   *pList;
    } ListFloat;
    struct {
      LONG cNumList;
      GUID Nom;
      GUID *pList;
    } ListGuid;
    struct {
      LONG cNumList;
      BSTR Nom;
      BSTR *pList;
    } ListBStr;
    struct {
      LONG Nom;
      LONG ValidBits;
    } Flag;
    struct {
      LONG Dummy;
    } None;
  } ValidVal;
} WIA_PROPERTY_INFO, *PWIA_PROPERTY_INFO;

成員

lAccessFlags

指定屬性的存取和屬性屬性旗標。 如需詳細資訊,請參閱 屬性

vt

指定屬性的 variant 資料類型。 這個成員可以是下列其中一項,可控制有效 ValidValunion 的結構成員:

  • VT_UI1

  • VT_UI2

  • VT_UI4

  • VT_I2

  • VT_I4

  • VT_R4

  • VT_R8

  • VT_CLSID

  • VT_BSTR

如需詳細資訊,請參閱 PROPVARIANT

ValidVal

ValidVal.Range

當屬性的有效值是由整數值範圍指定時填入的結構。

ValidVal.Range.Min

屬性的最小值。

ValidVal.Range.Nom

屬性的名義值。

ValidVal.Range.Max

屬性的最大值。

ValidVal.Range.Inc

可以使用的遞增值。

ValidVal.RangeFloat

當屬性的有效值範圍是由浮點值範圍指定,而屬性類型是浮點數範圍,而屬性類型是 浮點數雙精度浮點數時填入的結構。

ValidVal.RangeFloat.Min

屬性的最小值。

ValidVal.RangeFloat.Nom

屬性的名義值。

ValidVal.RangeFloat.Max

屬性的最大值。

ValidVal.RangeFloat.Inc

可以使用的遞增值。

ValidVal.List

當屬性的有效值是由整數值清單所指定時填入的結構。

ValidVal.List.cNumList

pList 點的有效 值陣列中的元素數目。

ValidVal.List.Nom

屬性的名義值。

ValidVal.List.pList

屬性可以設定為的有效值陣列。

ValidVal.ListFloat

當屬性的有效值是由浮點值清單所指定時所填入的結構。

ValidVal.ListFloat.cNumList

pList 點的有效 值陣列中的元素數目。

ValidVal.ListFloat.Nom

屬性的名義值。

ValidVal.ListFloat.pList

屬性可以設定為的有效值陣列。

ValidVal.ListGuid

當屬性的有效值是由 GUID 清單指定時填入的結構。

ValidVal.ListGuid.cNumList

pList 點的有效 值陣列中的元素數目。

ValidVal.ListGuid.Nom

屬性的名義值。

ValidVal.ListGuid.pList

屬性可以設定為的有效值陣列。

ValidVal.ListBStr

當屬性的有效值是由字串清單指定時所填入的結構。

ValidVal.ListBStr.cNumList

pList 點的有效 值陣列中的元素數目。

ValidVal.ListBStr.Nom

屬性的名義值。

ValidVal.ListBStr.pList

屬性可以設定為的有效值陣列。

ValidVal.Flag

當屬性的有效值是由旗標的位集指定時填入的結構。

ValidVal.Flag.Nom

屬性的名義值。

ValidVal.Flag.ValidBits

遮罩,指出可以設定哪些位值。 這個成員應該是所有可能使用者定義旗標值的位 OR。

ValidVal.None

當屬性的有效值未在清單、範圍或bitset中指定時填入的結構。 此結構包含名為 Dummy的成員,表示屬性的類型為 NONE。

ValidVal.None.Dummy

言論

迷你驅動程式會使用 WIA_PROPERTY_INFO 來儲存任意類型屬性的相關信息。 wiasSetItemPropAttribs 也會使用此結構來設定屬性的有效值。 lAccessFlags 成員會控制對屬性的存取是只讀還是讀取/寫入。 當屬性由值清單、值範圍或旗標的位集定義時,這個成員也會傳達屬性的有效值集相關信息。 vt 成員包含屬性類型的相關信息。 這兩個成員都應該用來判斷 ValidValunion 可以存取的成員。

例如,對於 long 類型的讀取/寫入屬性,其有效值為 127 的範圍 -128 中的整數,且名義值為 0,lAccessFlags 會設定為 WIA_PROP_RW |WIA_PROP_RANGE,且 vt 會設定為 VT_I4。 Range.Min 會設定為 -128,Range.Max 會設定為 127,Range.Inc 會設定為 1。 Range.Nom 會設定為 0。

對於由三個 GUID 值清單定義之有效值的不同屬性,lAccessFlags 會設定其WIA_PROP_LIST位,vt 會設定為 VT_CLSID。 ListGuid.cNumList 會設定為 3,而三個 GUID ListGuid.pList[0]、ListGuid.pList[1],以及 ListGuid.pList[2]。

屬性,其有效值是由0x01、0x02、0x04和0x08的 bitset 所定義,lAccessFlags中設定WIA_PROP_FLAG位,且 vt 會設定為 VT_UI4。 對於這類屬性,儲存在 flag.ValidBits 中的值會0x0F,這是先前提及的四個旗標值的位 OR。

下列範例示範如何使用數位數據搭配WIA_PROPERTY_INFO,以及如何呼叫 wiasWriteMultiple 來設定屬性值。

初始化看起來可能如下列範例所示:

// Initialize WIA_IPA_ITEM_TIME (NONE)
  g_pszItemDefaults[13]              = WIA_IPA_ITEM_TIME_STR;
  g_piItemDefaults [13]              = WIA_IPA_ITEM_TIME;
  g_pvItemDefaults [13].cai.celems   = MyNumberOfElements;
  g_pvItemDefaults [13].cai.pelems   = PointerToMyArray;
  g_pvItemDefaults [13].vt           = VT_VECTOR|VT_UI2; // MyArray is an array of DWORD values
  g_psItemDefaults [13].ulKind       = PRSPEC_PROPID;
  g_psItemDefaults [13].propid       = g_piItemDefaults [13];
  g_wpiItemDefaults[13].lAccessFlags = WIA_PROP_READ|WIA_PROP_NONE;
  g_wpiItemDefaults[13].vt           = g_pvItemDefaults [13].vt;

在運行時間,使用 wiasWriteMultiple 變更值, 看起來可能如下列範例所示:

PROPVARIANT propVar;
PROPSPEC    propSpec;
PropVariantInit(&propVar);
propVar.vt          = VT_VECTOR | VT_UI2;
propVar.caui.cElems = sizeof(SYSTEMTIME) / sizeof(WORD);
propVar.caui.pElems = (WORD *) &CurrentTimeStruct;
propSpec.ulKind     = PRSPEC_PROPID;
propSpec.propid     = WIA_IPA_ITEM_TIME;
hr                  = wiasWriteMultiple(pWiasContext, 1, &propSpec, &propVar);

WIA 會使用 COM PROPVARIANT 類型,VARIANT,因此預設值為VT_VECTOR,而不是VT_ARRAY(也受到支援)。

要求

要求 價值
標頭 wiamindr_lh.h (包括 Wiamindr.h)

另請參閱

wiasSetItemPropAttribs