编写实例提供程序

实例提供程序提供一个或多个给定类的实例。 例如,实例提供程序可以提供有关 CPU 或其他类型硬件的信息。 由于实例提供程序管理的对象往往会定期更改,因此所有实例提供程序都被视为拉取提供程序;也就是说,每当 WMI 发出信息请求时,提供程序都会动态检索有关托管对象的信息。 该名称由 WMI 代表客户端请求从提供程序“拉取”信息而得来。 使用拉取技术,实例提供程序可以支持对特定实例进行检索、枚举、修改、删除和查询处理。

高性能提供程序可以提高实例提供程序的效率,或者以编程方式访问系统监视器中显示的数据。 有关详细信息,请参阅将实例提供程序转换为高性能提供程序

以下过程介绍如何编写实例提供程序。

编写实例提供程序

  1. 向 WMI 注册提供程序

    实例提供程序通过创建 __Win32Provider 实例和 __InstanceProviderRegistration 类向 WMI 注册。

  2. 初始化提供程序

    WMI 使用 IWbemProviderInit 加载和初始化提供程序。 这是所有提供程序共同的任务。

    注意

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

     

  3. 为提供程序实现 IWbemServices 接口

    IWbemServices 接口是实例提供程序的主要接口。

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

    设计提供程序时,你很可能需要调用 WMI 接口。 有关详细信息,请参阅调用 WMI

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

  5. 如有必要,请实现高性能接口

    高性能接口提高了提供程序对来自 WMI 的请求做出响应的速度。

  6. 如有必要,请实现对部分实例更新的支持

    顾名思义,部分实例更新是一种技术,用于仅更新实例的一部分。 有关从客户端调用部分实例的详细信息,请参阅更新部分实例检索 WMI 实例的一部分

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

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