开发 WMI 提供程序

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

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

注意

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

提供程序由托管对象格式 (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 位提供程序是否可以向两个客户端提供数据。

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