用于 KMDF 驱动程序的 WMI 简介

[仅适用于 KMDF]

Kernel-Mode驱动程序框架支持向 Windows Management Instrumentation (WMI) 提供信息的驱动程序。 此类驱动程序称为 WMI 数据提供程序 ,因为它们向 WMI 客户端提供数据,这些客户端是已注册以从 WMI 接收信息的应用程序。

WMI 数据提供程序支持 WMI 数据块,这些块可以表示以下一项或多项:

  • 数据项,其中包含驱动程序向 WMI 客户端发送或从 WMI 客户端接收的设备特定数据。

  • 方法 (函数) 驱动程序代表 WMI 客户端执行。

  • 驱动程序发送到已注册以接收设备特定事件的通知的 WMI 客户端的事件。

WMI 数据块在 .mof 文件中指定为 WMI 类 。 每个 WMI 数据块都由 GUID 标识。

所有驱动程序都必须支持 WMI 为其设备类定义的任何标准 WMI 数据块。 这些 WMI 数据块在 Wmicore.mof 中定义。

驱动程序还可以支持在 .mof 文件中定义的 WMI 数据块。 若要了解如何定义和发布自定义的 WMI 数据块,请参阅以下部分:

框架 WMI 对象和回调函数

框架定义了驱动程序可用于实现 WMI 数据提供程序的两个对象。 WMI 提供程序对象表示驱动程序提供的 WMI 数据块的架构。 WMI 实例对象表示与特定提供程序关联的数据块的实例。 驱动程序通过实现这两个对象定义的以下事件回调函数来与 WMI 客户端通信:

EvtWmiProviderFunctionControl
启用和禁用驱动程序对收集 WMI 数据和发送 WMI 事件的支持。

EvtWmiInstanceQueryInstance
将 WMI 提供程序的实例数据传送到 WMI 客户端。

EvtWmiInstanceSetInstanceEvtWmiInstanceSetItem
将驱动程序的数据块中的信息设置为客户端提供的值。

EvtWmiInstanceExecuteMethod
应客户端的请求执行驱动程序提供的方法。

实现 WMI 的示例驱动程序

FIREFLY、PCIDRV 和 Toaster 示例驱动程序 是 WMI 数据提供程序。