共用方式為


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

當屬性的有效值未在清單、範圍或位集中提供時,就會填入 結構。 這個結構包含名為 Dummy 的成員,表示屬性的類型為 NONE。

ValidVal.None.Dummy

備註

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

例如,對於 long 類型的讀取/寫入屬性,其有效值為範圍 -128 到 127 的整數,而其名義值為 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的位集所定義,會在 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