ioWMIQueryAllDataMultiple 函数 (wdm.h)

IoWMIQueryAllDataMultiple 例程返回实现一组 WMI 类之一的所有 WMI 数据块。

语法

NTSTATUS IoWMIQueryAllDataMultiple(
  [in]            PVOID  *DataBlockObjectList,
  [in]            ULONG  ObjectCount,
  [in, out]       PULONG InOutBufferSize,
  [out, optional] PVOID  OutBuffer
);

参数

[in] DataBlockObjectList

指向指向 WMI 数据块对象的指针数组的指针的指针。 调用方使用 IoWMIOpenBlock 例程为每个 WMI 类打开一个数据块对象。 必须使用WMIGUID_QUERY访问权限打开每个对象。

[in] ObjectCount

指定 在 DataBlockObjectList 参数中传递的数组中的条目数。

[in, out] InOutBufferSize

指向内存位置的指针,该位置指定 在 OutBuffer 参数中传递的缓冲区的大小。 如果例程成功,它将更新内存位置以指定 OutBuffer 中实际存储的字节数。 如果例程失败,状态代码为 STATUS_BUFFER_TOO_SMALL,它将返回返回数据所需的字节数。

[out, optional] OutBuffer

指向缓冲区的指针,例程在其中返回 WMI 数据。 例程返回一系列大小可变 的WNODE_ALL_DATA 结构,每组返回的数据块对应一个。 每个 WNODE_ALL_DATA 结构的 WnodeHeader.Linkage 成员包含从当前WNODE_ALL_DATA的开头到下一个WNODE_ALL_DATA开头的偏移量。 链中的最后一个块将 WnodeHeader.Linkage 设置为零。 OutBuffer 必须指向从非分页池分配的缓冲区。

返回值

例程返回 NTSTATUS 代码。 可能的返回值包括:

返回代码 说明
STATUS_SUCCESS
操作成功。 例程返回 OutBuffer 参数指向的缓冲区中的 WMI 数据。 该例程还返回 InOutBufferSize 参数指向的内存位置中返回的数据的大小(以字节为单位)。
STATUS_BUFFER_TOO_SMALL
调用方在 OutBuffer 参数中传递的缓冲区太小。 例程返回 InOutBufferSize 参数指向的内存位置中所需的缓冲区大小。

注解

IoWMIQueryAllDataMultiple 确定哪些驱动程序支持指定的 WMI 类,并为每个此类驱动程序发出 IRP_MN_QUERY_ALL_DATA 请求。

如果没有驱动程序实现任何指定的 WMI 类,则例程将返回STATUS_SUCCESS它还返回 InOutBufferSize 参数指向的内存位置中的零值。

若要查询单个 WMI 类,请使用 IoWMIQueryAllData

要求

要求
最低受支持的客户端 在 Windows XP 和更高版本的 Windows 操作系统中可用。
目标平台 通用
标头 wdm.h(包括 Wdm.h、Ntddk.h、Ntifs.h)
Library NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL

另请参阅

IRP_MN_QUERY_ALL_DATA

IoWMIOpenBlock

IoWMIQueryAllData