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