Compartilhar via


estrutura WIA_PROPERTY_INFO (wiamindr_lh.h)

A estrutura WIA_PROPERTY_INFO é usada para armazenar informações de acesso padrão e de valor válidas para uma propriedade de item de tipo arbitrário.

Sintaxe

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;

Membros

lAccessFlags

Especifica os sinalizadores de atributo de acesso e propriedade de uma propriedade. Para obter mais informações, consulte Atributos de propriedade.

vt

Especifica o tipo de dados variante para a propriedade . Esse membro, que pode ser um dos seguintes, controla qual membro de estrutura do ValidValunion é válido:

  • VT_UI1

  • VT_UI2

  • VT_UI4

  • VT_I2

  • VT_I4

  • VT_R4

  • VT_R8

  • VT_CLSID

  • VT_BSTR

Para obter mais informações, consulte PROPVARIANT.

ValidVal

ValidVal.Range

Uma estrutura que é preenchida quando os valores válidos da propriedade são especificados por um intervalo de valores inteiros.

ValidVal.Range.Min

O valor mínimo da propriedade .

ValidVal.Range.Nom

O valor nominal da propriedade.

ValidVal.Range.Max

O valor máximo da propriedade .

ValidVal.Range.Inc

O valor de incremento que pode ser usado.

ValidVal.RangeFloat

Uma estrutura que é preenchida quando os valores válidos da propriedade são especificados por um intervalo de valores de ponto flutuante e o tipo de propriedade é um float ou double.

ValidVal.RangeFloat.Min

O valor mínimo da propriedade .

ValidVal.RangeFloat.Nom

O valor nominal da propriedade.

ValidVal.RangeFloat.Max

O valor máximo da propriedade .

ValidVal.RangeFloat.Inc

O valor de incremento que pode ser usado.

ValidVal.List

Uma estrutura que é preenchida quando os valores válidos da propriedade são especificados por uma lista de valores inteiros.

ValidVal.List.cNumList

O número de elementos na matriz de valores válidos aos quais pList aponta.

ValidVal.List.Nom

O valor nominal da propriedade .

ValidVal.List.pList

Uma matriz de valores válidos para os quais a propriedade pode ser definida.

ValidVal.ListFloat

Uma estrutura que é preenchida quando os valores válidos da propriedade são especificados por uma lista de valores de ponto flutuante.

ValidVal.ListFloat.cNumList

O número de elementos na matriz de valores válidos aos quais pList aponta.

ValidVal.ListFloat.Nom

O valor nominal da propriedade .

ValidVal.ListFloat.pList

Uma matriz de valores válidos para os quais a propriedade pode ser definida.

ValidVal.ListGuid

Uma estrutura que é preenchida quando os valores válidos da propriedade são especificados por uma lista de GUIDs.

ValidVal.ListGuid.cNumList

O número de elementos na matriz de valores válidos aos quais pList aponta.

ValidVal.ListGuid.Nom

O valor nominal da propriedade .

ValidVal.ListGuid.pList

Uma matriz de valores válidos para os quais a propriedade pode ser definida.

ValidVal.ListBStr

Uma estrutura que é preenchida quando os valores válidos da propriedade são especificados por uma lista de cadeias de caracteres.

ValidVal.ListBStr.cNumList

O número de elementos na matriz de valores válidos aos quais pList aponta.

ValidVal.ListBStr.Nom

O valor nominal da propriedade .

ValidVal.ListBStr.pList

Uma matriz de valores válidos para os quais a propriedade pode ser definida.

ValidVal.Flag

Uma estrutura que é preenchida quando os valores válidos da propriedade são especificados por um conjunto de bits de sinalizadores.

ValidVal.Flag.Nom

O valor nominal da propriedade .

ValidVal.Flag.ValidBits

Uma máscara que indica quais valores de bit podem ser definidos. Esse membro deve ser um OR bit a bit de todos os valores de sinalizador definidos pelo usuário possíveis.

ValidVal.None

Uma estrutura que é preenchida quando os valores válidos da propriedade não são fornecidos em uma lista, intervalo ou conjunto de bits. Essa estrutura contém um membro chamado Dummy, que indica que a propriedade é do tipo NONE.

ValidVal.None.Dummy

Comentários

O WIA_PROPERTY_INFO é usado pelo minidriver para armazenar informações sobre uma propriedade de tipo arbitrário. Essa estrutura também é usada pelo wiasSetItemPropAttribs para definir os valores válidos de uma propriedade. O membro lAccessFlags controla se o acesso a uma propriedade é somente leitura ou leitura/gravação. Esse membro também transmite informações sobre o conjunto de valores válidos para uma propriedade quando eles são definidos por uma lista de valores, um intervalo de valores ou um conjunto de bits de sinalizadores. O membro vt contém informações sobre o tipo da propriedade . Ambos os membros devem ser usados para determinar qual membro do ValidValunion pode ser acessado.

Por exemplo, para uma propriedade de leitura/gravação do tipo long, cujos valores válidos são inteiros no intervalo -128 a 127 e cujo valor nominal é 0, lAccessFlags seria definido como WIA_PROP_RW | WIA_PROP_RANGE e vt seriam definidos como VT_I4. Range.Min seria definido como -128, Range.Max seria definido como 127 e Range.Inc seria definido como 1. Range.Nom seria definido como 0.

Para uma propriedade diferente cujos valores válidos são definidos por uma lista de três valores guid, lAccessFlags teria seu WIA_PROP_LIST bit definido e vt seria definido como VT_CLSID. ListGuid.cNumList seria definido como 3 e os três GUIDs são ListGuid.pList[0], ListGuid.pList[1]e ListGuid.pList[2].

Uma propriedade cujos valores válidos são definidos por um conjunto de bits dos valores 0x01, 0x02, 0x04 e 0x08 teria o WIA_PROP_FLAG bit definido em lAccessFlags e vt seria definido como VT_UI4. Para essa propriedade, o valor armazenado em Flag.ValidBits seria 0x0F, o OR bit a bit dos quatro valores de sinalizador mencionados anteriormente.

Os exemplos a seguir mostram como usar dados de matriz com WIA_PROPERTY_INFO e como chamar wiasWriteMultiple para definir seus valores de propriedade.

A inicialização pode ser semelhante ao seguinte exemplo:

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

Em tempo de execução, alterar o valor com wiasWriteMultiple pode ser semelhante ao seguinte exemplo:

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

O WIA usa o tipo COM PROPVARIANT , VARIANT, portanto, o padrão é VT_VECTOR e não VT_ARRAY (que também tem suporte).

Requisitos

Requisito Valor
Cabeçalho wiamindr_lh.h (inclua Wiamindr.h)

Confira também

wiasSetItemPropAttribs