开发 WMI 提供程序

提供程序是组件对象模型 (COM) 对象,充当 WMI 与托管对象之间的中介。 例如,当应用程序或脚本使用 WMI Win32_LogicalDisk 类请求磁盘数据时,将通过预安装的 Win32 提供程序动态获取数据。

如果要通过 WMI 向其他应用程序提供数据,可以通过编写 COM 服务器或通过 Visual Studio 中的 WMI ATL 向导创建非托管代码提供程序。 可以在.NET Framework中使用 WMI 编写托管代码提供程序。 本节中的主题介绍编写非托管 COM 提供程序的过程。

注意

为了确保托管对象的所有 WMI 类定义在 WMI 发生故障并重启时还原到 WMI 存储库 ,请使用托管对象格式中的 #pragma自动恢复 预处理器指令, (MOF) 文件。

提供程序由 托管对象格式 (MOF) 架构和执行提供程序函数的 DLL 文件所定义的类组成。 例如,定义 Win32 提供程序类的 MOF 为 CIMWin32.mof,DLL CIMWin32.dll,这两者均位于 %windir%\System32\Wbem 中。

提供程序的 MOF 架构可能包含多个提供程序类型。 例如, 事件日志提供程序 在名为 Ntevt.mof 的一个 MOF 文件中具有实例、方法和事件提供程序类型。 建议将相关提供程序的所有类和注册架构组合在一个文件中,而不是为每个类创建一个文件。

除了使用预安装提供程序之外,还可以创建自己的提供程序来提供有关硬件设备或软件操作的信息。

下表列出了创建提供程序的基本任务。

任务 说明
设计托管对象格式 (MOF) 类 为想要通过 WMI 管理的实体开发模型,并创建托管对象格式 (MOF) 文件来描述架构。
通过编写提供程序向 WMI 提供数据 创建与 WMI 耦合的最基本提供程序。
在应用程序中合并提供程序 如果提供程序不一直运行,请将提供程序作为组件包含在应用程序中。
注册提供程序 向 COM 和 WMI 注册提供程序。
初始化提供程序 实现 IWbemProviderInitIWbemProviderInitSink 接口。
调用 WMI 从提供程序调用 WMI 接口。
模拟客户端 设置访问客户端应用程序的安全性。
更新提供程序 根据需要改进提供程序。
卸载提供程序 在关闭期间或提供程序处于空闲状态时,从内存中删除提供程序。
调试提供程序提供程序配置和故障排除类 使用 WMI 提供的设施调试提供程序。
在 64 位计算机上获取和提供数据 评估是否需要 32 位应用程序兼容性提供程序,或者 64 位提供程序是否可以向这两个客户端提供数据。

以下主题讨论编写不同类型的提供程序所需的步骤: