Поделиться через


структура 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)

См. также раздел

wiasSetItemPropAttribs