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

指定属性的变体数据类型。 此成员可以是下列成员之一,控制 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 的成员。

例如,对于 类型的读/写属性,其有效值为 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的位集定义,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