Condividi tramite


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)

Vedi anche

wiasSetItemPropAttribs