WNODE_ALL_DATA-Struktur (wmistr.h)

Die WNODE_ALL_DATA-Struktur enthält Daten für alle Instanzen eines Daten- 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;

Member

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 über die WNODE_XXX-Daten bereitstellen, die übergeben oder zurückgegeben werden.

DataBlockOffset

Gibt den Offset in Bytes vom Anfang der WNODE_ALL_DATA-Struktur bis zum Anfang der Daten für die erste instance an.

InstanceCount

Gibt die Anzahl von Instanzen an, deren Daten den festen Membern der WNODE_ALL_DATA im Puffer unter IrpStack-Parameters.WMI.Buffer> folgen.

OffsetInstanceNameOffsets

Gibt den Offset in Bytes vom Anfang der WNODE_ALL_DATA bis zu einem Array von Offsets zu dynamischen instance Namen an. Jeder instance Name muss an einer USHORT-Grenze ausgerichtet werden. Wenn alle zurückzugebenden Instanzen über statische instance Namen verfügen, ignoriert WMI OffsetInstanceNameOffsets.

DUMMYUNIONNAME

DUMMYUNIONNAME.FixedInstanceSize

Gibt die Größe der instance an, die zurückgegeben werden sollen, wenn alle diese Instanzen dieselbe Größe haben. Dieser Member ist nur gültig, wenn der Treiber WNODE_FLAG_FIXED_INSTANCE_SIZE in WnodeHeader.Flags festlegt.

DUMMYUNIONNAME.OffsetInstanceDataAndLength

Wenn die zurückzugebenden Instanzen unterschiedlich groß sind, ist OffsetInstanceDataAndLength ein Array von InstanceCount OFFSETINSTANCEDATAANDLENGTH-Strukturen, die den Offset in Bytes vom Anfang der WNODE_ALL_DATA bis zum Anfang jedes instance und seiner Länge angeben. OFFSETINSTANCEDATAANDLENGTH wird wie folgt definiert:

typedef struct {
  ULONG  OffsetInstanceData;
  ULONG  LengthInstanceData;
} OFFSETINSTANCEDATAANDLENGTH, *POFFSETINSTANCEDATAANDLENGTH;

Jede instance muss an einer USHORT-Grenze ausgerichtet werden. Das OffsetInstanceDataAndLength-Element ist nur gültig, wenn der Treiber WNODE_FLAG_FIXED_INSTANCE_SIZE in WnodeHeader.Flags löscht.

Hinweise

Ein Treiber füllt eine WNODE_ALL_DATA-Struktur als Reaktion auf eine IRP_MN_QUERY_ALL_DATA Anforderung aus. Ein Treiber kann auch ein WNODE_ALL_DATA als Ereignis generieren.

Nach dem Ausfüllen der festen Member der Struktur schreibt ein Treiber instance Daten und dynamischen instance namen (falls vorhanden) bei DataBlockOffset bzw. OffsetInstanceNameOffsets in den Puffer unter IrpStack-Parameters.WMI.Buffer>. Wenn WNODE_FLAG_FIXED_INSTANCE_SIZE klar ist, folgt der erste Offset dem letzten Element des OffsetInstanceDataAndLength-Arrays plus Auffüllung, damit die Daten an einer 8-Byte-Grenze beginnen.

Instanznamen müssen USHORT ausgerichtet sein. Instanzdaten müssen QUADWORD ausgerichtet sein.

Anforderungen

Anforderung Wert
Header wmistr.h (einschließlich Wmistr.h)

Weitere Informationen

IRP_MN_QUERY_ALL_DATA

WNODE_EVENT_ITEM

WNODE_HEADER