编写类提供程序

类提供程序管理 WMI 的某个类或一系列类。 类提供程序可以是推送提供程序,也可以是拉取提供程序;也就是说,它既可以存储自己的数据,也允许 WMI 在 Windows 管理服务中为其存储数据。 虽然类提供程序安装在特定计算机上,但它可以更改整个企业的类定义。 因此,大多数开发人员通常不会创建类提供程序。

在构造类提供程序之前,验证支持的类确实必须动态生成。 在大多数情况下,类列表变化缓慢且有限。 如果是这种情况,则不必创建类提供程序。 可以改为使用 WMI API 或 MOF 文件将类定义放置在 WMI 存储库中。

以下过程介绍了如何实现类提供程序。

实现类提供程序

  1. 确定提供程序是推送提供程序还是拉取提供程序。

    拉取提供程序为响应应用程序请求而动态提供数据,而推送提供程序将其数据一次性存储在 WMI 存储库中。 有关详细信息,请参阅确定推送或拉取状态

  2. 设计类提供程序并向 WMI 注册。

    类提供程序通过创建 __Win32Provider 实例和 __ClassProviderRegistration 实例向 WMI 进行注册。 有关详细信息,请参阅注册类提供程序

  3. 为提供程序实现 IWbemProviderInit 接口。

    WMI 使用 IWbemProviderInit 加载和初始化提供程序。 如果要设计推送提供程序,IWbemProviderInit 是唯一要实现的接口。 有关详细信息,请参阅初始化提供程序

    注意

    强烈建议类提供程序使用多线程模型“Both”。

     

  4. 添加提供程序所需的任何其他代码。

    设计提供程序时,很可能需要调用 WMI 接口。 有关详细信息,请参阅调用方法维护提供程序中的安全级别

    检索客户端的信息时,可能需要访问该客户端的安全级别。 有关详细信息,请参阅模拟客户端

  5. 为提供程序实现 IWbemServices 接口。

    IWbemServices 接口是拉取类提供程序的主接口。 有关详细信息,请参阅实现类提供程序的主接口

  6. 将预先存在的提供程序替换为新代码。

    如果没有要复制的预先存在的提供程序,则无需执行此步骤。 有关详细信息,请参阅更新提供程序