WIA_PROPERTY_INFO-Struktur (wiamindr_lh.h)
Die WIA_PROPERTY_INFO-Struktur wird verwendet, um Standardzugriffs- und gültige Wertinformationen für eine Elementeigenschaft eines beliebigen Typs zu speichern.
Syntax
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;
Member
lAccessFlags
Gibt die Zugriffs- und Eigenschaftsattributflags für eine Eigenschaft an. Weitere Informationen finden Sie unter Eigenschaftenattribute.
vt
Gibt den Variant-Datentyp für die Eigenschaft an. Dieser Member, der einer der folgenden Elemente sein kann, steuert, welcher Strukturmember der ValidValunion gültig ist:
VT_UI1
VT_UI2
VT_UI4
VT_I2
VT_I4
VT_R4
VT_R8
VT_CLSID
VT_BSTR
Weitere Informationen finden Sie unter PROPVARIANT.
ValidVal
ValidVal.Range
Eine Struktur, die gefüllt wird, wenn die gültigen Werte der Eigenschaft durch einen Bereich ganzzahliger Werte angegeben werden.
ValidVal.Range.Min
Der Mindestwert der Eigenschaft.
ValidVal.Range.Nom
Der Nominalwert der Eigenschaft.
ValidVal.Range.Max
Der maximal zulässige Wert der Eigenschaft.
ValidVal.Range.Inc
Der Inkrementwert, der verwendet werden kann.
ValidVal.RangeFloat
Eine Struktur, die gefüllt wird, wenn die gültigen Werte der Eigenschaft durch einen Bereich von Gleitkommawerten angegeben werden und der Eigenschaftstyp ein float oder double ist.
ValidVal.RangeFloat.Min
Der Mindestwert der Eigenschaft.
ValidVal.RangeFloat.Nom
Der Nominalwert der Eigenschaft.
ValidVal.RangeFloat.Max
Der maximal zulässige Wert der Eigenschaft.
ValidVal.RangeFloat.Inc
Der Inkrementwert, der verwendet werden kann.
ValidVal.List
Eine Struktur, die gefüllt wird, wenn die gültigen Werte der Eigenschaft durch eine Liste ganzzahliger Werte angegeben werden.
ValidVal.List.cNumList
Die Anzahl der Elemente im Array gültiger Werte, auf die pList verweist.
ValidVal.List.Nom
Der Nominalwert der -Eigenschaft.
ValidVal.List.pList
Ein Array gültiger Werte, auf das die Eigenschaft festgelegt werden kann.
ValidVal.ListFloat
Eine Struktur, die gefüllt wird, wenn die gültigen Werte der Eigenschaft durch eine Liste von Gleitkommawerten angegeben werden.
ValidVal.ListFloat.cNumList
Die Anzahl der Elemente im Array gültiger Werte, auf die pList verweist.
ValidVal.ListFloat.Nom
Der Nominalwert der -Eigenschaft.
ValidVal.ListFloat.pList
Ein Array gültiger Werte, auf das die Eigenschaft festgelegt werden kann.
ValidVal.ListGuid
Eine Struktur, die gefüllt wird, wenn die gültigen Werte der Eigenschaft durch eine Liste von GUIDs angegeben werden.
ValidVal.ListGuid.cNumList
Die Anzahl der Elemente im Array gültiger Werte, auf die pList verweist.
ValidVal.ListGuid.Nom
Der Nominalwert der -Eigenschaft.
ValidVal.ListGuid.pList
Ein Array gültiger Werte, auf das die Eigenschaft festgelegt werden kann.
ValidVal.ListBStr
Eine Struktur, die gefüllt wird, wenn die gültigen Werte der Eigenschaft durch eine Liste von Zeichenfolgen angegeben werden.
ValidVal.ListBStr.cNumList
Die Anzahl der Elemente im Array gültiger Werte, auf die pList verweist.
ValidVal.ListBStr.Nom
Der Nominalwert der -Eigenschaft.
ValidVal.ListBStr.pList
Ein Array gültiger Werte, auf das die Eigenschaft festgelegt werden kann.
ValidVal.Flag
Eine Struktur, die gefüllt wird, wenn die gültigen Werte der Eigenschaft durch eine Bitmenge von Flags angegeben werden.
ValidVal.Flag.Nom
Der Nominalwert der -Eigenschaft.
ValidVal.Flag.ValidBits
Eine Maske, die angibt, welche Bitwerte festgelegt werden können. Dieser Member sollte ein bitweises OR aller möglichen benutzerdefinierten Flagwerte sein.
ValidVal.None
Eine Struktur, die gefüllt wird, wenn die gültigen Werte der Eigenschaft nicht in einer Liste, einem Bereich oder einem Bitset angegeben sind. Diese Struktur enthält einen Member namens Dummy, der angibt, dass die Eigenschaft vom Typ NONE ist.
ValidVal.None.Dummy
Hinweise
Der WIA_PROPERTY_INFO wird vom Minitreiber verwendet, um Informationen zu einer Eigenschaft eines beliebigen Typs zu speichern. Diese Struktur wird auch von wiasSetItemPropAttribs verwendet, um die gültigen Werte einer Eigenschaft festzulegen. Das lAccessFlags-Element steuert, ob der Zugriff auf eine Eigenschaft schreibgeschützt oder lese-/schreibgeschützt ist. Dieses Element vermittelt auch Informationen zum Satz gültiger Werte für eine Eigenschaft, wenn sie durch eine Liste von Werten, einen Wertebereich oder eine Bitmenge von Flags definiert werden. Das vt-Element enthält Informationen zum Typ der Eigenschaft. Beide Member sollten verwendet werden, um zu bestimmen, auf welches Mitglied der ValidValunion zugegriffen werden kann.
Für eine Lese-/Schreibeigenschaft vom Typ long, deren gültige Werte ganze Zahlen im Bereich -128 bis 127 sind und deren Nominalwert 0 ist, würde lAccessFlags beispielsweise auf WIA_PROP_RW | WIA_PROP_RANGE, und vt wird auf VT_I4 festgelegt. Range.Min wird auf -128, Range.Max auf 127 und Range.Inc auf 1 festgelegt. Range.Nom wird auf 0 festgelegt.
Für eine andere Eigenschaft, deren gültige Werte durch eine Liste von drei GUID-Werten definiert werden, hat lAccessFlags den WIA_PROP_LIST Bit festgelegt, und vt wird auf VT_CLSID festgelegt. ListGuid.cNumList wird auf 3 festgelegt, und die drei GUIDs sind ListGuid.pList[0], ListGuid.pList[1] und ListGuid.pList[2].
Für eine Eigenschaft, deren gültige Werte durch eine Bitmenge der Werte 0x01, 0x02, 0x04 und 0x08 definiert werden, wird das WIA_PROP_FLAG Bit in lAccessFlags festgelegt, und vt wäre auf VT_UI4 festgelegt. Für eine solche Eigenschaft wäre der in Flag.ValidBits gespeicherte Wert 0x0F, das bitweise OR der vier zuvor genannten Flagwerte.
Die folgenden Beispiele zeigen, wie Sie Arraydaten mit WIA_PROPERTY_INFO verwenden und wie Sie wiasWriteMultiple aufrufen, um Ihre Eigenschaftswerte festzulegen.
Die Initialisierung kann wie im folgenden Beispiel aussehen:
// 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;
Zur Laufzeit kann das Ändern des Werts mit wiasWriteMultiple wie im folgenden Beispiel aussehen:
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 verwendet den COM PROPVARIANT-TypVARIANT, daher ist der Standardwert VT_VECTOR und nicht VT_ARRAY (was auch unterstützt wird).
Anforderungen
Anforderung | Wert |
---|---|
Header | wiamindr_lh.h (wiamindr.h einschließen) |