WNODE_ALL_DATA 结构 (wmistr.h)
WNODE_ALL_DATA 结构包含数据块或事件块的所有实例的数据。
语法
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;
成员
WnodeHeader
指定一个 WNODE_HEADER 结构,该结构包含所有 WNODE_XXX 结构共有的信息,例如缓冲区大小、表示与请求关联的数据块的 GUID,以及提供有关正在传递或返回 的 WNODE_XXX 数据信息的标志。
DataBlockOffset
指示从 WNODE_ALL_DATA 结构开头到第一个实例的数据开头的偏移量(以字节为单位)。
InstanceCount
指示其数据遵循 IrpStack-Parameters.WMI.Buffer> 缓冲区中WNODE_ALL_DATA的固定成员的实例数。
OffsetInstanceNameOffsets
指示从 WNODE_ALL_DATA 开头到动态实例名称的偏移数组的偏移量(以字节为单位)。 每个实例名称必须在 USHORT 边界上对齐。 如果要返回的所有实例都具有静态实例名称,则 WMI 将忽略 OffsetInstanceNameOffsets。
DUMMYUNIONNAME
DUMMYUNIONNAME.FixedInstanceSize
指示所有此类实例的大小相同时要返回的每个实例的大小。 仅当驱动程序在 WnodeHeader.Flags 中设置WNODE_FLAG_FIXED_INSTANCE_SIZE时,此成员才有效。
DUMMYUNIONNAME.OffsetInstanceDataAndLength
如果要返回的实例大小不同, OffsetInstanceDataAndLength 是 InstanceCount OFFSETINSTANCEDATAANDLENGTH 结构的数组,指定从 WNODE_ALL_DATA 开头到每个实例开头的偏移量及其长度(以字节为单位)。 OFFSETINSTANCEDATAANDLENGTH 的定义如下:
typedef struct {
ULONG OffsetInstanceData;
ULONG LengthInstanceData;
} OFFSETINSTANCEDATAANDLENGTH, *POFFSETINSTANCEDATAANDLENGTH;
每个实例必须在 USHORT 边界上对齐。 仅当驱动程序清除 WnodeHeader.Flags 中的WNODE_FLAG_FIXED_INSTANCE_SIZE时,OffsetInstanceDataAndLength 成员才有效。
注解
驱动程序填充 WNODE_ALL_DATA 结构以响应 IRP_MN_QUERY_ALL_DATA 请求。 驱动程序还可能生成 WNODE_ALL_DATA 作为事件。
填充结构的固定成员后,驱动程序在 IrpStack-Parameters.WMI.Buffer> 的缓冲区中分别写入任何) DataBlockOffset 和 OffsetInstanceNameOffsets 的实例数据和动态实例 (名称(如果有任何) )。 如果WNODE_FLAG_FIXED_INSTANCE_SIZE清晰,则第一个偏移量将跟在 OffsetInstanceDataAndLength 数组的最后一个元素之后,加上填充,以便数据从 8 字节边界开始。
实例名称必须符合 USHORT。 实例数据必须是 QUADWORD 对齐的。
要求
要求 | 值 |
---|---|
Header | wmistr.h (包括 Wmistr.h) |