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.Linkage 成员包含从当前 WNODE_SINGLE_INSTANCE 的开头到下一个 WNODE_SINGLE_INSTANCE的开头的偏移量。 链中的最后一个块 WnodeHeader.Linkage 设置为零。 每个不同的数据块实例对应于单个匹配的 WMI 类和实例名称。 OutBuffer 必须指向从非分页池分配的缓冲区。

返回值

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

返回代码 描述
STATUS_SUCCESS
作成功。 例程返回由 OutBuffer 参数指向的缓冲区中的 WMI 数据。 该例程还返回 InOutBufferSize 参数指向的内存位置中返回的数据的大小(以字节为单位)。
STATUS_BUFFER_TOO_SMALL
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)
NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL

另请参阅

IRP_MN_QUERY_SINGLE_INSTANCE

IoWMIOpenBlock

IoWMIQuerySingleInstance

IoWMISetSingleInstance

UNICODE_STRING