struttura WIA_PROPERTY_INFO (wiamindr_lh.h)
La struttura WIA_PROPERTY_INFO viene utilizzata per archiviare l'accesso predefinito e le informazioni sul valore valide per una proprietà dell'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;
Membri
lAccessFlags
Specifica i flag di attributo di accesso e proprietà per una proprietà. Per altre informazioni, vedere attributi proprietà.
vt
Specifica il tipo di dati variant per la proprietà . Questo membro, che può essere uno dei seguenti, controlla quale membro della struttura del 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 riempita 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 utilizzato.
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 utilizzato.
ValidVal.List
Struttura riempita quando i valori validi della proprietà vengono specificati da un elenco di valori interi.
ValidVal.List.cNumList
Numero di elementi nella matrice di valori validi a cui pList punti.
ValidVal.List.Nom
Valore nominale della proprietà.
ValidVal.List.pList
È possibile impostare una matrice di valori validi su cui è possibile impostare la proprietà.
ValidVal.ListFloat
Struttura riempita 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 punti.
ValidVal.ListFloat.Nom
Valore nominale della proprietà.
ValidVal.ListFloat.pList
È possibile impostare una matrice di valori validi su cui è possibile impostare la proprietà.
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 punti.
ValidVal.ListGuid.Nom
Valore nominale della proprietà.
ValidVal.ListGuid.pList
È possibile impostare una matrice di valori validi su cui è possibile impostare la proprietà.
ValidVal.ListBStr
Struttura riempita 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 punti.
ValidVal.ListBStr.Nom
Valore nominale della proprietà.
ValidVal.ListBStr.pList
È possibile impostare una matrice di valori validi su cui è possibile impostare la proprietà.
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 riempita 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
Osservazioni
Il WIA_PROPERTY_INFO viene usato dal minidriver per archiviare informazioni su una proprietà di tipo arbitrario. Questa struttura viene utilizzata 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 di lettura/scrittura. Questo membro fornisce inoltre informazioni sul set di valori validi per una proprietà quando sono 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 utilizzati per determinare a quale membro del è possibile accedere ValidValunion.
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 verrà 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 sarebbe impostato su 3 e i tre GUID sono ListGuid.pList[0], ListGuid.pList[1], e ListGuid.pList[2].
Proprietà i cui valori validi sono definiti da un bitset di valori 0x01, 0x02, 0x04 e 0x08 avrebbero impostato il bit di WIA_PROP_FLAG in lAccessFlagse vt verrà impostato su VT_UI4. Per tale proprietà, il valore archiviato in Flag.ValidBits sarebbe 0x0F, l'OR bit per bit dei quattro valori di flag menzionati in precedenza.
Gli esempi seguenti illustrano 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 di PROPVARIANT COM, VARIANT, quindi il valore predefinito è VT_VECTOR e non VT_ARRAY (supportato anche).
Fabbisogno
Requisito | Valore |
---|---|
intestazione | wiamindr_lh.h (include Wiamindr.h) |