WIA_PROPERTY_INFO struttura (wiamindr_lh.h)
La struttura WIA_PROPERTY_INFO viene usata per archiviare le informazioni di accesso predefinite e valore valide per una proprietà elemento di tipo arbitrario.
Sintassi
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;
Members
lAccessFlags
Specifica i flag di attributi di accesso e proprietà per una proprietà. Per altre informazioni, vedere Attributi delle proprietà.
vt
Specifica il tipo di dati variant per la proprietà. Questo membro, che può essere uno dei seguenti, controlla quale membro struttura della ValidValunion è valido:
VT_UI1
VT_UI2
VT_UI4
VT_I2
VT_I4
VT_R4
VT_R8
VT_CLSID
VT_BSTR
Per altre informazioni, vedere PROPVARIANT.
ValidVal
ValidVal.Range
Struttura compilata quando i valori validi della proprietà vengono specificati da un intervallo di valori integer.
ValidVal.Range.Min
Valore minimo della proprietà.
ValidVal.Range.Nom
Valore nominale della proprietà.
ValidVal.Range.Max
Valore massimo della proprietà.
ValidVal.Range.Inc
Valore di incremento che può essere usato.
ValidVal.RangeFloat
Struttura riempita quando i valori validi della proprietà vengono specificati da un intervallo di valori a virgola mobile e il tipo di proprietà è un float o double.
ValidVal.RangeFloat.Min
Valore minimo della proprietà.
ValidVal.RangeFloat.Nom
Valore nominale della proprietà.
ValidVal.RangeFloat.Max
Valore massimo della proprietà.
ValidVal.RangeFloat.Inc
Valore di incremento che può essere usato.
ValidVal.List
Struttura compilata quando i valori validi della proprietà vengono specificati da un elenco di valori integer.
ValidVal.List.cNumList
Numero di elementi nella matrice di valori validi a cui pList punta.
ValidVal.List.Nom
Valore nominale della proprietà.
ValidVal.List.pList
Una matrice di valori validi può essere impostata su.
ValidVal.ListFloat
Struttura compilata quando i valori validi della proprietà vengono specificati da un elenco di valori a virgola mobile.
ValidVal.ListFloat.cNumList
Numero di elementi nella matrice di valori validi a cui pList punta.
ValidVal.ListFloat.Nom
Valore nominale della proprietà.
ValidVal.ListFloat.pList
Una matrice di valori validi può essere impostata su.
ValidVal.ListGuid
Struttura compilata quando i valori validi della proprietà vengono specificati da un elenco di GUID.
ValidVal.ListGuid.cNumList
Numero di elementi nella matrice di valori validi a cui pList punta.
ValidVal.ListGuid.Nom
Valore nominale della proprietà.
ValidVal.ListGuid.pList
Una matrice di valori validi può essere impostata su.
ValidVal.ListBStr
Struttura compilata quando i valori validi della proprietà vengono specificati da un elenco di stringhe.
ValidVal.ListBStr.cNumList
Numero di elementi nella matrice di valori validi a cui pList punta.
ValidVal.ListBStr.Nom
Valore nominale della proprietà.
ValidVal.ListBStr.pList
Una matrice di valori validi può essere impostata su.
ValidVal.Flag
Struttura riempita quando i valori validi della proprietà vengono specificati da un bitset di flag.
ValidVal.Flag.Nom
Valore nominale della proprietà.
ValidVal.Flag.ValidBits
Maschera che indica quali valori di bit possono essere impostati. Questo membro deve essere un OR bit per bit di tutti i possibili valori di flag definiti dall'utente.
ValidVal.None
Struttura compilata quando i valori validi della proprietà non vengono specificati in un elenco, un intervallo o un bitset. Questa struttura contiene un membro denominato Dummy, che indica che la proprietà è di tipo NONE.
ValidVal.None.Dummy
Commenti
Il WIA_PROPERTY_INFO viene usato dal minidriver per archiviare informazioni su una proprietà di tipo arbitrario. Questa struttura viene usata anche dal wiasSetItemPropAttribs per impostare i valori validi di una proprietà. Il membro lAccessFlags controlla se l'accesso a una proprietà è di sola lettura o lettura/scrittura. Questo membro fornisce anche informazioni sul set di valori validi per una proprietà quando vengono definiti da un elenco di valori, un intervallo di valori o un bitset di flag. Il membro vt contiene informazioni sul tipo della proprietà. Entrambi i membri devono essere usati per determinare quale membro dell'oggetto ValidValunion può essere accessibile.
Ad esempio, per una proprietà di lettura/scrittura di tipo long, i cui valori validi sono interi nell'intervallo -128 a 127 e il cui valore nominale è 0, lAccessFlags verrebbe impostato su WIA_PROP_RW | WIA_PROP_RANGE e vt verranno impostati su VT_I4. Range.Min verrà impostato su -128, Range.Max verrà impostato su 127 e Range.Inc verrà impostato su 1. Range.Nom verrà impostato su 0.
Per una proprietà diversa i cui valori validi sono definiti da un elenco di tre valori GUID, lAccessFlags avrà il relativo set di bit WIA_PROP_LIST e vt verrà impostato su VT_CLSID. ListGuid.cNumList sarà impostato su 3 e i tre GUID sono ListGuid.pList[0], ListGuid.pList[1], ListGuid.pList[1]e ListGuid.pList[2].
Proprietà i cui valori validi sono definiti da un bitset dei valori 0x01, 0x02, 0x04 e 0x08 avrebbero il WIA_PROP_FLAG bit impostato in lAccessFlags e vt verrebbe impostato su VT_UI4. Per tale proprietà, il valore archiviato in Flag.ValidBits sarà 0x0F, l'OR bit per bit dei quattro valori di flag menzionati in precedenza.
Negli esempi seguenti viene illustrato come usare i dati della matrice con WIA_PROPERTY_INFO e come chiamare wiasWriteMultiple per impostare i valori delle proprietà.
L'inizializzazione potrebbe essere simile all'esempio seguente:
// 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;
In fase di esecuzione, la modifica del valore con wiasWriteMultiple potrebbe essere simile all'esempio seguente:
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 il tipo COM PROPVARIANT , VARIANT, quindi il valore predefinito è VT_VECTOR e non VT_ARRAY (che è supportato anche).
Requisiti
Requisito | Valore |
---|---|
Intestazione | wiamindr_lh.h (includere Wiamindr.h) |