IoWMIQueryAllData 函数 (wdm.h)
IoWMIQueryAllData 例程返回实现给定 WMI 类的所有 WMI 数据块。
语法
NTSTATUS IoWMIQueryAllData(
[in] PVOID DataBlockObject,
[in, out] PULONG InOutBufferSize,
[out, optional] PVOID OutBuffer
);
参数
[in] DataBlockObject
指向 WMI 数据块对象的指针。 调用方使用 IoWMIOpenBlock 例程打开 WMI 类的数据块对象。 必须使用WMIGUID_QUERY访问权限打开对象。
[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 代码。 可能的返回值包括:
返回代码 | 描述 |
---|---|
|
作成功。 例程返回由 OutBuffer 参数指向的缓冲区中的 WMI 数据。 该例程还返回 InOutBufferSize 参数指向的内存位置中返回的数据的大小(以字节为单位)。 |
|
没有驱动程序实现指定的 WMI 类。 |
|
OutBuffer 参数中调用方传递的缓冲区太小。 例程返回由 InOutBufferSize 参数指向的内存位置中所需的缓冲区大小。 |
言论
IoWMIQueryAllData 确定哪些驱动程序支持指定的 WMI 类,并向每个此类驱动程序发出 IRP_MN_QUERY_ALL_DATA 请求。
若要查询多个 WMI 类,请使用 IoWMIQueryAllDataMultiple。
要求
要求 | 价值 |
---|---|
最低支持的客户端 | Microsoft Windows XP 和更高版本的 Windows作系统中可用。 |
目标平台 | 普遍 |
标头 | wdm.h (包括 Wdm.h、Ntddk.h、Ntifs.h) |
库 | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= APC_LEVEL |