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;

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 einem Anforderung zugeordneten Datenblock darstellt, und Flags, die Informationen zu den übergebenen oder zurückgegebenen WNODE_XXX-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 der WNODE_ALL_DATA im Puffer bei IrpStack-Parameters.WMI.Buffer> folgen.

OffsetInstanceNameOffsets

Gibt den Offset in Bytes vom Anfang der WNODE_ALL_DATA auf ein Array von Offsets auf dynamische 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 jeder Instanz an, die zurückgegeben werden soll, wenn alle solchen Instanzen dieselbe Größe aufweisen. Dieses Element ist nur gültig, wenn der Treiber WNODE_FLAG_FIXED_INSTANCE_SIZE in WnodeHeader.Flags festlegt.

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 von 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-Element ist nur gültig, wenn der Treiber WNODE_FLAG_FIXED_INSTANCE_SIZE in WnodeHeader.Flags löscht.

Bemerkungen

Ein Treiber füllt eine WNODE_ALL_DATA Struktur als Reaktion auf eine IRP_MN_QUERY_ALL_DATA Anforderung aus. Ein Treiber generiert möglicherweise auch eine WNODE_ALL_DATA als Ereignis.

Nach dem Ausfüllen der festen Elemente der Struktur schreibt ein Treiber Instanzdaten und dynamische Instanznamen (sofern vorhanden) bei DataBlockOffset und OffsetInstanceNameOffsets im Puffer unter 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 8-Byte-Grenze beginnen.

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

Requirements (Anforderungen)

   
Header wmistr.h (include Wmistr.h)

Weitere Informationen

IRP_MN_QUERY_ALL_DATA

WNODE_EVENT_ITEM

WNODE_HEADER