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

Buffer 可以容纳的缓冲区的输出数据的字节数。

[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 Drivers中支持 WMI。

要求

要求 价值
目标平台 普遍
最低 KMDF 版本 1.0
标头 wdfwmi.h (包括 Wdf.h)
IRQL PASSIVE_LEVEL

另请参阅

EvtWmiInstanceQueryInstance

EvtWmiInstanceSetInstance

EvtWmiInstanceSetItem

EvtWmiProviderFunctionControl

WDF_WMI_INSTANCE_CONFIG

WdfWmiInstanceCreate