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