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