编写实例提供程序
实例提供程序提供一个或多个给定类的实例。 例如,实例提供程序可以提供有关 CPU 或其他类型硬件的信息。 由于实例提供程序管理的对象往往会定期更改,因此所有实例提供程序都被视为拉取提供程序;也就是说,每当 WMI 发出信息请求时,提供程序都会动态检索有关托管对象的信息。 该名称由 WMI 代表客户端请求从提供程序“拉取”信息而得来。 使用拉取技术,实例提供程序可以支持对特定实例进行检索、枚举、修改、删除和查询处理。
高性能提供程序可以提高实例提供程序的效率,或者以编程方式访问系统监视器中显示的数据。 有关详细信息,请参阅将实例提供程序转换为高性能提供程序。
以下过程介绍如何编写实例提供程序。
编写实例提供程序
-
实例提供程序通过创建 __Win32Provider 实例和 __InstanceProviderRegistration 类向 WMI 注册。
-
WMI 使用 IWbemProviderInit 加载和初始化提供程序。 这是所有提供程序共同的任务。
注意
强烈建议实例提供程序使用多线程模型“Both”。
-
IWbemServices 接口是实例提供程序的主要接口。
添加提供程序所需的任何其他代码。
设计提供程序时,你很可能需要调用 WMI 接口。 有关详细信息,请参阅调用 WMI。
检索客户端的信息时,可能需要访问该客户端的安全级别。 有关详细信息,请参阅模拟客户端。
如有必要,请实现高性能接口。
高性能接口提高了提供程序对来自 WMI 的请求做出响应的速度。
如有必要,请实现对部分实例更新的支持。
顾名思义,部分实例更新是一种技术,用于仅更新实例的一部分。 有关从客户端调用部分实例的详细信息,请参阅更新部分实例和检索 WMI 实例的一部分。
将预先存在的提供程序替换为新代码。
如果没有要复制的预先存在的提供程序,则无需执行此步骤。 有关详细信息,请参阅更新提供程序。