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 的哪个成员。

例如,对于 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 (。

要求

要求
Header wiamindr_lh.h (包括 Wiamindr.h)

另请参阅

wiasSetItemPropAttribs