EVT_WDF_WMI_INSTANCE_QUERY_INSTANCE回调函数 (wdfwmi.h)

[仅适用于 KMDF]

驱动程序的 EvtWmiInstanceQueryInstance 回调函数将 WMI 提供程序的实例数据复制到缓冲区中,以便传送到 WMI 客户端。

语法

EVT_WDF_WMI_INSTANCE_QUERY_INSTANCE EvtWdfWmiInstanceQueryInstance;

NTSTATUS EvtWdfWmiInstanceQueryInstance(
  [in]  WDFWMIINSTANCE WmiInstance,
  [in]  ULONG OutBufferSize,
  [in]  PVOID OutBuffer,
  [out] PULONG BufferUsed
)
{...}

参数

[in] WmiInstance

WMI 实例对象的句柄。

[in] OutBufferSize

OutBuffer 指向的输出缓冲区的大小(以字节为单位)。

[in] OutBuffer

指向输出缓冲区的指针。

[out] BufferUsed

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

返回值

如果 OutBufferSize 参数的值指示输出缓冲区太小而无法接收数据,则 EvtWmiInstanceQueryInstance 回调函数必须返回STATUS_BUFFER_TOO_SMALL。 否则,回调函数必须将数据复制到缓冲区并返回STATUS_SUCCESS。

注解

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

在框架将驱动程序提供的实例数据发送到 WMI 客户端之前,它会向数据添加所有必要的 WMI 标头信息。

如果驱动程序将 WMI 实例对象的 WDF_WMI_INSTANCE_CONFIG 结构的 UseContextForQuery 成员设置为只读数据块的 TRUE,则驱动程序不提供 EvtWmiInstanceQueryInstance 回调函数。

如果驱动程序必须向 WMI 客户端提供字符串数据,则驱动程序应调用 WDF_WMI_BUFFER_APPEND_STRING 函数来设置字符串的格式。

有关 EvtWmiInstanceQueryInstance 回调函数的详细信息,请参阅 支持读/写 WMI 数据块 和支持 Read-Only WMI 数据块

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

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

要求

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

另请参阅

EvtWmiInstanceExecuteMethod

EvtWmiInstanceSetInstance

EvtWmiInstanceSetItem

EvtWmiProviderFunctionControl

WDF_WMI_BUFFER_APPEND_STRING

WDF_WMI_INSTANCE_CONFIG

WdfWmiInstanceCreate