EVT_WDF_WMI_INSTANCE_EXECUTE_METHOD回调函数 (wdfwmi.h)

[仅适用于 KMDF]

驱动程序的 EvtWmiInstanceExecuteMethod 回调函数执行驱动程序为 WMI 数据提供程序的实例提供的指定方法。

语法

EVT_WDF_WMI_INSTANCE_EXECUTE_METHOD EvtWdfWmiInstanceExecuteMethod;

NTSTATUS EvtWdfWmiInstanceExecuteMethod(
  [in]      WDFWMIINSTANCE WmiInstance,
  [in]      ULONG MethodId,
  [in]      ULONG InBufferSize,
  [in]      ULONG OutBufferSize,
  [in, out] PVOID Buffer,
  [out]     PULONG BufferUsed
)
{...}

参数

[in] WmiInstance

WMI 实例对象的句柄。

[in] MethodId

一个 值,该值标识提供程序实例中的方法。 此值对应于提供程序 MOF 文件中指定的 WmiMethodId 值。

[in] InBufferSize

输入数据的字节数。

[in] OutBufferSize

缓冲区指向的缓冲区可以保存的输出数据的字节数。

[in, out] Buffer

指向用于输入和/或输出的缓冲区的指针,由指定方法确定。 如果同时提供输入和输出数据,驱动程序将使用输出数据覆盖输入数据。

[out] BufferUsed

指向位置的指针,该位置接收驱动程序写入输出缓冲区的字节数。 如果 OutBufferSize 参数指定的输出缓冲区大小太小,驱动程序会将此位置设置为所需的缓冲区大小。

返回值

如果操作成功, EvtWmiInstanceExecuteMethod 回调函数必须返回STATUS_SUCCESS。 否则,此函数必须返回一个状态值, NT_SUCCESS (状态) 等于 FALSE。 如果 OutBufferSize 参数的值指示输出缓冲区太小而无法接收数据,驱动程序必须返回STATUS_BUFFER_TOO_SMALL。

注解

若要注册 EvtWmiInstanceExecuteMethod 回调函数,驱动程序必须在调用 WdfWmiInstanceCreate 之前将函数的地址置于 WDF_WMI_INSTANCE_CONFIG 结构中。

驱动程序执行 MethodId 参数指定的实例方法后,驱动程序必须使用 BufferUsed 参数来存储写入缓冲区的字节数。

框架不会将对驱动程序的 WMI 事件回调函数的调用彼此或与驱动程序的任何其他事件回调函数同步。 如果 EvtWmiInstanceExecuteMethod 回调函数的数据是动态的,并且与其他回调函数共享,则驱动程序可以使用框架的 等待锁或旋转锁 来同步对数据的访问。

有关 EvtWmiInstanceExecuteMethod 回调函数的详细信息,请参阅 在 Framework-Based 驱动程序中支持 WMI

要求

要求
目标平台 通用
最低 KMDF 版本 1.0
标头 wdfwmi.h (包括 Wdf.h)
IRQL PASSIVE_LEVEL

另请参阅

EvtWmiInstanceQueryInstance

EvtWmiInstanceSetInstance

EvtWmiInstanceSetItem

EvtWmiProviderFunctionControl

WDF_WMI_INSTANCE_CONFIG

WdfWmiInstanceCreate