IoWMIExecuteMethod 函数 (wdm.h)

IoWMIExecuteMethod 例程在指定的 WMI 数据块实例上运行 WMI 类方法。

语法

NTSTATUS IoWMIExecuteMethod(
  [in]      PVOID           DataBlockObject,
  [in]      PUNICODE_STRING InstanceName,
  [in]      ULONG           MethodId,
  [in]      ULONG           InBufferSize,
  [in, out] PULONG          OutBufferSize,
  [in, out] PUCHAR          InOutBuffer
);

参数

[in] DataBlockObject

指向 WMI 数据块对象的指针。 调用方使用 IoWMIOpenBlock 打开 WMI 类的数据块对象。 必须使用WMIGUID_EXECUTE访问权限打开 对象。

[in] InstanceName

指定数据块的实例的名称。 此值对应于块的 InstanceName 属性的值。

[in] MethodId

指定要设置的方法的方法项 ID。 此参数的值对应于方法的 WmiMethodId 限定符中声明的值。

[in] InBufferSize

指定方法的输入数据的大小(以字节为单位)。 实际输入数据在 InOutBuffer 参数指向的缓冲区中传递。

[in, out] OutBufferSize

指向 ULONG 的指针,该指针指定方法输出的数据的预期大小(字节)。 实际输出数据在 InOutBuffer 参数指向的缓冲区中返回。 如果例程成功,它将更新内存位置,以指定 InOutBuffer 中实际存储的字节数。 如果例程失败并出现STATUS_BUFFER_TOO_SMALL,它将返回返回数据所需的字节数。

[in, out] InOutBuffer

指向缓冲区的指针,调用方在其中传递 WMI 方法的输入数据并接收 WMI 方法的输出数据。

返回值

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

返回代码 说明
STATUS_SUCCESS
操作成功。 例程返回 InOutBuffer 参数指向的缓冲区中的 WMI 数据。 例程还会返回 OutBufferSize 参数指向的内存位置中返回的数据的大小(以字节为单位)。
STATUS_WMI_GUID_NOT_FOUND
没有驱动程序实现 WMI 类。
STATUS_WMI_INSTANCE_NOT_FOUND
没有驱动程序实现 WMI 类的实例, 其 InstanceName 属性等于 InstanceName 参数中指定的值。
STATUS_WMI_ITEMID_NOT_FOUND
WMI 类不包含方法 ID 等于 MethodId 值的方法。
STATUS_BUFFER_TOO_SMALL
调用方在 OutBuffer 参数中传递的缓冲区太小。 例程返回 InOutBufferSize 参数指向的内存位置中所需的缓冲区大小。
STATUS_WMI_GUID_DISCONNECTED
WMI GUID 不再可用或永远不可用。

注解

IoWMIExecuteMethod 确定哪些驱动程序可能支持指定的 WMI 类和实例名称。 它向每个此类驱动程序发出 IRP_MN_EXECUTE_METHOD 请求。 使用匹配的 InstanceName 属性导出数据块实例的驱动程序随后运行指定的 WMI 方法。

要求

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

另请参阅

IRP_MN_EXECUTE_METHOD

IoWMIOpenBlock