WNODE_ALL_DATA Struktur (wmistr.h)
Die WNODE_ALL_DATA-Struktur enthält Daten für alle Instanzen eines Datenblocks oder Ereignisblocks.
Syntax
typedef struct tagWNODE_ALL_DATA {
struct _WNODE_HEADER WnodeHeader;
ULONG DataBlockOffset;
ULONG InstanceCount;
ULONG OffsetInstanceNameOffsets;
union {
ULONG FixedInstanceSize;
OFFSETINSTANCEDATAANDLENGTH OffsetInstanceDataAndLength[];
} DUMMYUNIONNAME;
} WNODE_ALL_DATA, *PWNODE_ALL_DATA;
Angehörige
WnodeHeader
Gibt eine WNODE_HEADER Struktur an, die Informationen enthält, die allen WNODE_XXX--Strukturen gemeinsam sind, z. B. die Puffergröße, die GUID, die einen datenblock darstellt, der einer Anforderung zugeordnet ist, und Flags, die Informationen zu den WNODE_XXX- übergebenen oder zurückgegebenen Daten bereitstellen.
DataBlockOffset
Gibt den Offset in Bytes vom Anfang der WNODE_ALL_DATA Struktur bis zum Anfang der Daten für die erste Instanz an.
InstanceCount
Gibt die Anzahl der Instanzen an, deren Daten den festen Membern des WNODE_ALL_DATA im Puffer bei IrpStack->Parameters.WMI.Bufferfolgen.
OffsetInstanceNameOffsets
Gibt den Offset in Bytes vom Anfang der WNODE_ALL_DATA auf ein Array von Offsets zu dynamischen Instanznamen an. Jeder Instanzname muss an einer USHORT-Grenze ausgerichtet werden. Wenn alle zurückgegebenen Instanzen statische Instanznamen aufweisen, ignoriert WMI OffsetInstanceNameOffsets.
DUMMYUNIONNAME
DUMMYUNIONNAME.FixedInstanceSize
Gibt die Größe der einzelnen Instanzen an, die zurückgegeben werden sollen, wenn alle derartigen Instanzen dieselbe Größe aufweisen. Dieses Element ist nur gültig, wenn der Treiber WNODE_FLAG_FIXED_INSTANCE_SIZE in WnodeHeader.Flagsfestlegt.
DUMMYUNIONNAME.OffsetInstanceDataAndLength
Wenn Instanzen, die zurückgegeben werden sollen, in der Größe variieren, ist OffsetInstanceDataAndLength ein Array von InstanceCount OFFSETINSTANCEDATAANDLENGTH Strukturen, die den Offset in Bytes vom Anfang der WNODE_ALL_DATA bis zum Anfang jeder Instanz und deren Länge angeben. OFFSETINSTANCEDATAANDLENGTH wird wie folgt definiert:
typedef struct {
ULONG OffsetInstanceData;
ULONG LengthInstanceData;
} OFFSETINSTANCEDATAANDLENGTH, *POFFSETINSTANCEDATAANDLENGTH;
Jede Instanz muss an einer USHORT-Grenze ausgerichtet werden. Das OffsetInstanceDataAndLength Member ist nur gültig, wenn der Treiber WNODE_FLAG_FIXED_INSTANCE_SIZE in WnodeHeader.Flagslöscht.
Bemerkungen
Ein Treiber füllt eine WNODE_ALL_DATA Struktur als Reaktion auf eine IRP_MN_QUERY_ALL_DATA Anforderung aus. Ein Treiber kann auch eine WNODE_ALL_DATA als Ereignis generieren.
Nach dem Ausfüllen der festen Elemente der Struktur schreibt ein Treiber Instanzdaten und dynamische Instanznamen (falls vorhanden) bei DataBlockOffset und OffsetInstanceNameOffsetsbzw. im Puffer bei IrpStack->Parameters.WMI.Buffer. Wenn WNODE_FLAG_FIXED_INSTANCE_SIZE klar ist, folgt der erste Offset dem letzten Element des OffsetInstanceDataAndLength Arrays sowie dem Abstand, sodass die Daten an einer Grenze von 8 Byte beginnen.
Instanznamen müssen USHORT ausgerichtet sein. Instanzdaten müssen QUADWORD ausgerichtet sein.
Anforderungen
Anforderung | Wert |
---|---|
Header- | wmistr.h (include Wmistr.h) |