Partager via


structure WIA_PROPERTY_INFO (wiamindr_lh.h)

La structure WIA_PROPERTY_INFO est utilisée pour stocker l’accès par défaut et les informations de valeur valides pour une propriété d’élément de type arbitraire.

Syntaxe

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;

Membres

lAccessFlags

Spécifie les indicateurs d’attribut d’accès et de propriété pour une propriété. Pour plus d’informations, consultez Attributs de propriété.

vt

Spécifie le type de données variant pour la propriété . Ce membre, qui peut être l’un des éléments suivants, contrôle le membre de structure du ValidValunion qui est valide :

  • VT_UI1

  • VT_UI2

  • VT_UI4

  • VT_I2

  • VT_I4

  • VT_R4

  • VT_R8

  • VT_CLSID

  • VT_BSTR

Pour plus d’informations, consultez PROPVARIANT.

ValidVal

ValidVal.Range

Structure qui est remplie lorsque les valeurs valides de la propriété sont spécifiées par une plage de valeurs entières.

ValidVal.Range.Min

Valeur minimale de la propriété.

ValidVal.Range.Nom

Valeur nominale de la propriété.

ValidVal.Range.Max

Valeur maximale de la propriété.

ValidVal.Range.Inc

Valeur d’incrément qui peut être utilisée.

ValidVal.RangeFloat

Structure qui est remplie lorsque les valeurs valides de la propriété sont spécifiées par une plage de valeurs à virgule flottante et que le type de propriété est un float ou un double.

ValidVal.RangeFloat.Min

Valeur minimale de la propriété.

ValidVal.RangeFloat.Nom

Valeur nominale de la propriété.

ValidVal.RangeFloat.Max

Valeur maximale de la propriété.

ValidVal.RangeFloat.Inc

Valeur d’incrément qui peut être utilisée.

ValidVal.List

Structure qui est remplie lorsque les valeurs valides de la propriété sont spécifiées par une liste de valeurs entières.

ValidVal.List.cNumList

Nombre d’éléments dans le tableau de valeurs valides vers lesquelles pList pointe.

ValidVal.List.Nom

Valeur nominale de la propriété.

ValidVal.List.pList

Tableau de valeurs valides sur laquelle la propriété peut être définie.

ValidVal.ListFloat

Structure qui est remplie lorsque les valeurs valides de la propriété sont spécifiées par une liste de valeurs à virgule flottante.

ValidVal.ListFloat.cNumList

Nombre d’éléments dans le tableau de valeurs valides vers lesquelles pList pointe.

ValidVal.ListFloat.Nom

Valeur nominale de la propriété.

ValidVal.ListFloat.pList

Tableau de valeurs valides sur laquelle la propriété peut être définie.

ValidVal.ListGuid

Structure qui est remplie lorsque les valeurs valides de la propriété sont spécifiées par une liste de GUID.

ValidVal.ListGuid.cNumList

Nombre d’éléments dans le tableau de valeurs valides vers lesquelles pList pointe.

ValidVal.ListGuid.Nom

Valeur nominale de la propriété.

ValidVal.ListGuid.pList

Tableau de valeurs valides sur laquelle la propriété peut être définie.

ValidVal.ListBStr

Structure qui est remplie lorsque les valeurs valides de la propriété sont spécifiées par une liste de chaînes.

ValidVal.ListBStr.cNumList

Nombre d’éléments dans le tableau de valeurs valides vers lesquelles pList pointe.

ValidVal.ListBStr.Nom

Valeur nominale de la propriété.

ValidVal.ListBStr.pList

Tableau de valeurs valides sur laquelle la propriété peut être définie.

ValidVal.Flag

Structure qui est remplie lorsque les valeurs valides de la propriété sont spécifiées par un ensemble de bits d’indicateurs.

ValidVal.Flag.Nom

Valeur nominale de la propriété.

ValidVal.Flag.ValidBits

Masque indiquant les valeurs de bits qui peuvent être définies. Ce membre doit être un or au niveau du bit de toutes les valeurs d’indicateur définies par l’utilisateur possibles.

ValidVal.None

Structure qui est remplie lorsque les valeurs valides de la propriété ne sont pas données dans une liste, une plage ou un bitset. Cette structure contient un membre nommé Dummy, qui indique que la propriété est de type NONE.

ValidVal.None.Dummy

Remarques

Le WIA_PROPERTY_INFO est utilisé par le minidriver pour stocker des informations sur une propriété de type arbitraire. Cette structure est également utilisée par le wiasSetItemPropAttribs pour définir les valeurs valides d’une propriété. Le membre lAccessFlags contrôle si l’accès à une propriété est en lecture seule ou en lecture/écriture. Ce membre transmet également des informations sur l’ensemble de valeurs valides pour une propriété lorsqu’elles sont définies par une liste de valeurs, une plage de valeurs ou un ensemble de bits d’indicateurs. Le membre vt contient des informations sur le type de la propriété. Les deux membres doivent être utilisés pour déterminer le membre de ValidValunion qui est accessible.

Par exemple, pour une propriété en lecture/écriture de type long, dont les valeurs valides sont des entiers compris entre -128 et 127 et dont la valeur nominale est 0, lAccessFlags est défini sur WIA_PROP_RW | WIA_PROP_RANGE, et vt est défini sur VT_I4. Range.Min est défini sur -128, Range.Max sur 127 et Range.Inc sur 1. Range.Nom est défini sur 0.

Pour une autre propriété dont les valeurs valides sont définies par une liste de trois valeurs GUID, lAccessFlags a son WIA_PROP_LIST bit défini et vt est défini sur VT_CLSID. ListGuid.cNumList est défini sur 3, et les trois GUID sont ListGuid.pList[0], ListGuid.pList[1] et ListGuid.pList[2].

Une propriété dont les valeurs valides sont définies par un ensemble de bits des valeurs 0x01, 0x02, 0x04 et 0x08 aurait le bit WIA_PROP_FLAG défini dans lAccessFlags, et vt serait défini sur VT_UI4. Pour une telle propriété, la valeur stockée dans Flag.ValidBits est 0x0F, la valeur OR au niveau du bit des quatre valeurs d’indicateur mentionnées précédemment.

Les exemples suivants montrent comment utiliser des données de tableau avec WIA_PROPERTY_INFO et comment appeler wiasWriteMultiple pour définir vos valeurs de propriété.

L’initialisation peut ressembler à l’exemple suivant :

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

Au moment de l’exécution, la modification de la valeur avec wiasWriteMultiple peut ressembler à l’exemple suivant :

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 utilise le type COM PROPVARIANT , VARIANT, de sorte que la valeur par défaut est VT_VECTOR et non VT_ARRAY (qui est également prise en charge).

Configuration requise

Condition requise Valeur
En-tête wiamindr_lh.h (inclure Wiamindr.h)

Voir aussi

wiasSetItemPropAttribs