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 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 des indicateurs qui fournissent des informations sur les donnéesxxx WNODE_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 de l'WNODE_ALL_DATA dans la mémoire tampon à IrpStack->Parameters.WMI.Buffer.

OffsetInstanceNameOffsets

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

DUMMYUNIONNAME

DUMMYUNIONNAME.FixedInstanceSize

Indique la taille de chaque instance à retourner si toutes ces instances sont de 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 les instances à retourner varient en taille, OffsetInstanceDataAndLength est un tableau de InstanceCount OFFSETINSTANCEDATAANDLENGTH structures 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ée 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 de 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 les données d’instance et les noms d’instances dynamiques (le cas échéant) à DataBlockOffset et OffsetInstanceNameOffsets, respectivement, dans la mémoire tampon à 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 que le 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.

Exigences

Exigence Valeur
d’en-tête wmistr.h (include Wmistr.h)

Voir aussi

IRP_MN_QUERY_ALL_DATA

WNODE_EVENT_ITEM

WNODE_HEADER