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

当属性的有效值由一系列浮点值指定且属性类型为 float 或 double 时填充****的结构

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