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) |