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 成员才有效。

言论

驱动程序在响应 IRP_MN_QUERY_ALL_DATA 请求时填充 WNODE_ALL_DATA 结构。 驱动程序也可能生成 WNODE_ALL_DATA 作为事件。

在填充结构的固定成员后,驱动程序在 DataBlockOffsetOffsetInstanceNameOffsets分别在 IrpStack->Parameters.WMI.Buffer 缓冲区中写入实例数据和动态实例名称(如果有)。 如果WNODE_FLAG_FIXED_INSTANCE_SIZE清楚,则第一个偏移量遵循 OffsetInstanceDataAndLength 数组的最后一个元素,加上填充,以便数据在 8 字节边界上开始。

实例名称必须保持 USHORT 对齐。 实例数据必须对齐 QUADWORD。

要求

要求 价值
标头 wmistr.h (包括 Wmistr.h)

另请参阅

IRP_MN_QUERY_ALL_DATA

WNODE_EVENT_ITEM

WNODE_HEADER