Partager via


structure WNODE_ALL_DATA (wmistr.h)

La structure WNODE_ALL_DATA contient des données pour toutes les instances d’un bloc de données ou d’un bloc d’événements.

Syntaxe

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;

Membres

WnodeHeader

Spécifie une structure de WNODE_HEADER qui contient des informations communes à toutes les structures WNODE_XXX , telles que la taille de la mémoire tampon, le GUID qui représente un bloc de données associé à une demande et les indicateurs qui fournissent des informations sur les données WNODE_XXX transmises ou retournées.

DataBlockOffset

Indique le décalage en octets entre le début de la structure WNODE_ALL_DATA et le début des données pour la première instance.

InstanceCount

Indique le nombre d’instances dont les données suivent les membres fixes du WNODE_ALL_DATA dans la mémoire tampon sur IrpStack-Parameters.WMI.Buffer>.

OffsetInstanceNameOffsets

Indique le décalage en octets du début de la WNODE_ALL_DATA à un tableau de décalages en noms de instance dynamiques. Chaque nom instance doit être aligné sur une limite USHORT. Si toutes les instances à retourner ont des noms de instance statiques, WMI ignore OffsetInstanceNameOffsets.

DUMMYUNIONNAME

DUMMYUNIONNAME.FixedInstanceSize

Indique la taille de chaque instance à retourner si toutes ces instances ont la même taille. Ce membre est valide uniquement si le pilote définit WNODE_FLAG_FIXED_INSTANCE_SIZE dans WnodeHeader.Flags.

DUMMYUNIONNAME.OffsetInstanceDataAndLength

Si la taille des instances à retourner varie, OffsetInstanceDataAndLength est un tableau de structures InstanceCount OFFSETINSTANCEDATAANDLENGTH qui spécifient le décalage en octets du début de la WNODE_ALL_DATA au début de chaque instance et sa longueur. OFFSETINSTANCEDATAANDLENGTH est défini comme suit :

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

Chaque instance doit être aligné sur une limite USHORT. Le membre OffsetInstanceDataAndLength est valide uniquement si le pilote efface WNODE_FLAG_FIXED_INSTANCE_SIZE dans WnodeHeader.Flags.

Remarques

Un pilote remplit une structure WNODE_ALL_DATA en réponse à une demande de IRP_MN_QUERY_ALL_DATA . Un pilote peut également générer un WNODE_ALL_DATA en tant qu’événement.

Après avoir renseigné les membres fixes de la structure, un pilote écrit instance données et les noms de instance dynamiques (le cas échéant) dans DataBlockOffset et OffsetInstanceNameOffsets, respectivement, dans la mémoire tampon sur IrpStack-Parameters.WMI.Buffer>. Si WNODE_FLAG_FIXED_INSTANCE_SIZE est clair, le premier décalage suit le dernier élément du tableau OffsetInstanceDataAndLength , ainsi qu’un remplissage afin que les données commencent sur une limite de 8 octets.

Les noms d’instance doivent être alignés sur USHORT. Les données d’instance doivent être alignées sur QUADWORD.

Configuration requise

Condition requise Valeur
En-tête wmistr.h (inclure Wmistr.h)

Voir aussi

IRP_MN_QUERY_ALL_DATA

WNODE_EVENT_ITEM

WNODE_HEADER