IoWMIQuerySingleInstanceMultiple 函数 (wdm.h)
IoWMIQuerySingleInstanceMultiple 例程返回所有实现具有指定实例名称的指定 WMI 类的 WMI 数据块实例。
语法
NTSTATUS IoWMIQuerySingleInstanceMultiple(
[in] PVOID *DataBlockObjectList,
[in] PUNICODE_STRING InstanceNames,
[in] ULONG ObjectCount,
[in, out] PULONG InOutBufferSize,
[out, optional] PVOID OutBuffer
);
参数
[in] DataBlockObjectList
指向 WMI 数据块对象的指针数组的指针。 调用方使用 IoWMIOpenBlock 例程为每个 WMI 类打开一个数据块对象。 必须使用WMIGUID_QUERY访问权限打开每个对象。
[in] InstanceNames
指向包含实例名称 的UNICODE_STRING 结构的数组的指针。 数组中的第 n个实例名称对应于 DataBlockObjectList 参数指向的数组中指定的 n个 WMI 类的 InstanceName 属性的值。
[in] ObjectCount
指定 在 DataBlockObjectList 和 InstanceNames 参数中传递的数组中的条目数。
[in, out] InOutBufferSize
指向内存位置的指针,该位置指定在 OutBuffer 参数中传递的缓冲区的大小。 如果例程成功,它将更新内存位置,以指定实际存储在 OutBuffer 中的字节数。 如果例程失败并出现STATUS_BUFFER_TOO_SMALL,它将返回返回数据所需的字节数。
[out, optional] OutBuffer
指向例程返回 WMI 数据的缓冲区的指针。 例程返回一系列大小可变 的WNODE_SINGLE_INSTANCE 结构,每个数据块实例各一个。 每个WNODE_SINGLE_INSTANCE结构的 WnodeHeader.链接成员包含从当前WNODE_SINGLE_INSTANCE的开头到下一个WNODE_SINGLE_INSTANCE开头的偏移量。 链中的最后一个块将 WnodeHeader.Linkage 设置为零。 每个不同的数据块实例对应于单个匹配的 WMI 类和实例名称。 OutBuffer 必须指向从非分页池分配的缓冲区。
返回值
例程返回 NTSTATUS 代码。 可能的返回值包括:
返回代码 | 说明 |
---|---|
|
操作成功。 例程返回 OutBuffer 参数指向的缓冲区中的 WMI 数据。 例程还会返回 InOutBufferSize 参数指向的内存位置中返回的数据的大小(以字节为单位)。 |
|
调用方在 OutBuffer 参数中传递的缓冲区太小。 例程返回 InOutBufferSize 参数指向的内存位置中所需的缓冲区大小。 |
注解
IoWMIQuerySingleInstanceMultiple 确定哪些驱动程序可能支持指定的 WMI 类和实例名称,并为每个此类驱动程序发出 IRP_MN_QUERY_SINGLE_INSTANCE 请求。 使用匹配的 InstanceName 属性导出数据块实例的每个驱动程序将返回相应的数据。
如果没有驱动程序实现任何指定的 WMI 类和实例名称,则例程返回STATUS_SUCCESS。 它还在 InOutBufferSize 参数指向的内存位置中返回零值。
若要查询单个 WMI 类和实例名称,请使用 IoWMIQuerySingleInstance 例程。 驱动程序可以使用 IoWMISetSingleInstance 例程来更新类实例。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 在 Windows XP 和更高版本的 Windows 操作系统中可用。 |
目标平台 | 通用 |
标头 | wdm.h(包括 Wdm.h、Ntddk.h、Ntifs.h) |
Library | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= APC_LEVEL |