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

如果要返回的实例大小不同, OffsetInstanceDataAndLengthInstanceCount 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> 的缓冲区中分别写入任何) DataBlockOffsetOffsetInstanceNameOffsets 的实例数据和动态实例 (名称(如果有任何) )。 如果WNODE_FLAG_FIXED_INSTANCE_SIZE清晰,则第一个偏移量将跟在 OffsetInstanceDataAndLength 数组的最后一个元素之后,加上填充,以便数据从 8 字节边界开始。

实例名称必须符合 USHORT。 实例数据必须是 QUADWORD 对齐的。

要求

要求
Header wmistr.h (包括 Wmistr.h)

另请参阅

IRP_MN_QUERY_ALL_DATA

WNODE_EVENT_ITEM

WNODE_HEADER