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) |