Compartir a través de


estructura WIA_PROPERTY_INFO (wiamindr_lh.h)

La estructura WIA_PROPERTY_INFO se usa para almacenar la información de acceso predeterminada y valor válida para una propiedad de elemento de tipo arbitrario.

Sintaxis

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;

Miembros

lAccessFlags

Especifica las marcas de atributo de acceso y propiedad de una propiedad. Para obtener más información, vea Atributos de propiedad.

vt

Especifica el tipo de datos variant para la propiedad . Este miembro, que puede ser uno de los siguientes controles, qué miembro de estructura de ValidValunion es válido:

  • VT_UI1

  • VT_UI2

  • VT_UI4

  • VT_I2

  • VT_I4

  • VT_R4

  • VT_R8

  • VT_CLSID

  • VT_BSTR

Para obtener más información, vea PROPVARIANT.

ValidVal

ValidVal.Range

Estructura que se rellena cuando los valores válidos de la propiedad se especifican mediante un intervalo de valores enteros.

ValidVal.Range.Min

Valor mínimo de la propiedad.

ValidVal.Range.Nom

Valor nominal de la propiedad.

ValidVal.Range.Max

Valor máximo de la propiedad.

ValidVal.Range.Inc

Valor de incremento que se puede usar.

ValidVal.RangeFloat

Estructura que se rellena cuando los valores válidos de la propiedad se especifican mediante un intervalo de valores de punto flotante y el tipo de propiedad es un valor float o double.

ValidVal.RangeFloat.Min

Valor mínimo de la propiedad.

ValidVal.RangeFloat.Nom

Valor nominal de la propiedad.

ValidVal.RangeFloat.Max

Valor máximo de la propiedad.

ValidVal.RangeFloat.Inc

Valor de incremento que se puede usar.

ValidVal.List

Estructura que se rellena cuando se especifican los valores válidos de la propiedad mediante una lista de valores enteros.

ValidVal.List.cNumList

Número de elementos de la matriz de valores válidos a los que apunta pList .

ValidVal.List.Nom

Valor nominal de la propiedad.

ValidVal.List.pList

Matriz de valores válidos en la que se puede establecer la propiedad.

ValidVal.ListFloat

Estructura que se rellena cuando se especifican los valores válidos de la propiedad mediante una lista de valores de punto flotante.

ValidVal.ListFloat.cNumList

Número de elementos de la matriz de valores válidos a los que apunta pList .

ValidVal.ListFloat.Nom

Valor nominal de la propiedad.

ValidVal.ListFloat.pList

Matriz de valores válidos en la que se puede establecer la propiedad.

ValidVal.ListGuid

Estructura que se rellena cuando se especifican los valores válidos de la propiedad mediante una lista de GUID.

ValidVal.ListGuid.cNumList

Número de elementos de la matriz de valores válidos a los que apunta pList .

ValidVal.ListGuid.Nom

Valor nominal de la propiedad.

ValidVal.ListGuid.pList

Matriz de valores válidos en la que se puede establecer la propiedad.

ValidVal.ListBStr

Estructura que se rellena cuando una lista de cadenas especifica los valores válidos de la propiedad.

ValidVal.ListBStr.cNumList

Número de elementos de la matriz de valores válidos a los que apunta pList .

ValidVal.ListBStr.Nom

Valor nominal de la propiedad.

ValidVal.ListBStr.pList

Matriz de valores válidos en la que se puede establecer la propiedad.

ValidVal.Flag

Estructura que se rellena cuando los valores válidos de la propiedad se especifican mediante un conjunto de bits de marcas.

ValidVal.Flag.Nom

Valor nominal de la propiedad.

ValidVal.Flag.ValidBits

Máscara que indica qué valores de bits se pueden establecer. Este miembro debe ser un OR bit a bit de todos los posibles valores de marca definidos por el usuario.

ValidVal.None

Estructura que se rellena cuando los valores válidos de la propiedad no se proporcionan en una lista, intervalo o conjunto de bits. Esta estructura contiene un miembro denominado Dummy, que indica que la propiedad es del tipo NONE.

ValidVal.None.Dummy

Comentarios

El minidriver usa la WIA_PROPERTY_INFO para almacenar información sobre una propiedad de tipo arbitrario. Esta estructura también se usa en wiasSetItemPropAttribs para establecer los valores válidos de una propiedad. El miembro lAccessFlags controla si el acceso a una propiedad es de solo lectura o de lectura y escritura. Este miembro también transmite información sobre el conjunto de valores válidos para una propiedad cuando se definen mediante una lista de valores, un intervalo de valores o un conjunto de bits de marcas. El miembro vt contiene información sobre el tipo de la propiedad. Ambos miembros deben usarse para determinar a qué miembro se puede acceder a ValidValunion .

Por ejemplo, para una propiedad de lectura y escritura de tipo long, cuyos valores válidos son enteros en el intervalo -128 a 127 y cuyo valor nominal es 0, lAccessFlags se establecería en WIA_PROP_RW | WIA_PROP_RANGE y vt se establecerían en VT_I4. Range.Min se establecería en -128, Range.Max se establecería en 127 y Range.Inc se establecería en 1. Range.Nom se establecería en 0.

Para una propiedad diferente cuyos valores válidos se definen mediante una lista de tres valores GUID, lAccessFlags tendría su WIA_PROP_LIST conjunto de bits y vt se establecería en VT_CLSID. ListGuid.cNumList se establecería en 3 y los tres GUID son ListGuid.pList[0], ListGuid.pList[1] y ListGuid.pList[2].

Una propiedad cuyos valores válidos se definen mediante un conjunto de bits de los valores 0x01, 0x02, 0x04 y 0x08 tendría el bit de WIA_PROP_FLAG establecido en lAccessFlags y vt se establecería en VT_UI4. Para esta propiedad, el valor almacenado en Flag.ValidBits sería 0x0F, el OR bit a bit de los cuatro valores de marca mencionados anteriormente.

En los ejemplos siguientes se muestra cómo usar datos de matriz con WIA_PROPERTY_INFO y cómo llamar a wiasWriteMultiple para establecer los valores de propiedad.

La inicialización podría tener un aspecto similar al del ejemplo siguiente:

// 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;

En tiempo de ejecución, cambiar el valor con wiasWriteMultiple podría tener un aspecto similar al del ejemplo siguiente:

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 usa el tipo COM PROPVARIANT , VARIANT, por lo que el valor predeterminado es VT_VECTOR y no VT_ARRAY (que también se admite).

Requisitos

Requisito Valor
Header wiamindr_lh.h (incluya Wiamindr.h)

Consulte también

wiasSetItemPropAttribs