Freigeben über


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)

Siehe auch

IRP_MN_QUERY_ALL_DATA

WNODE_EVENT_ITEM

WNODE_HEADER