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