структура 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
Указывает тип данных variant для свойства . Этот элемент, который может быть одним из следующих, определяет, какой член структуры 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
Маска, указывающая, какие битовые значения можно задать. Этот элемент должен быть побитовой ИЛИ всех возможных пользовательских значений флагов.
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, будет иметь WIA_PROP_FLAG бит в lAccessFlags, а vt — VT_UI4. Для такого свойства значение, хранящееся в Flag.ValidBits , будет 0x0F, битовое ИЛИ четырех значений флага, упомянутых ранее.
В следующих примерах показано, как использовать данные массива с 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 PROPVARIANTVARIANT, поэтому по умолчанию используется VT_VECTOR, а не VT_ARRAY (который также поддерживается).
Требования
Требование | Значение |
---|---|
Заголовок | wiamindr_lh.h (включая Wiamindr.h) |