适用于 WMI 的 COM API

可以使用 WMI 组件对象模型 (COM) API 编写管理客户端应用程序,或创建新的 WMI 提供程序。 COM API 参考为高级系统管理员以及编写客户端和提供程序应用程序的开发人员提供信息。

有关编写 WMI 企业管理应用程序的详细信息,请参阅 使用 C++创建 WMI 应用程序。 有关如何编写 WMI 提供程序的详细信息,请参阅 向 WMI 提供数据

注意

WMI 仅支持使用 Microsoft Visual C++ 6.0 及更高版本的开发系统进行C++开发。 但是,还可以使用其他编译器,例如来自 Borland 和 Watcom 的编译器。

 

每个不同的 WMI 对象都继承自接口,最终继承自 IUnknown 接口。 COM 指示对象实现者或接口如何处理内存管理、参数管理和多线程等任务。 通过符合 COM,适用于 WMI 的 COM API 可确保它支持每个 WMI 对象的接口提供的功能。

WMI 通过以下特定于 WMI 的 COM 接口进行访问。

接口 描述
IEnumWbemClassObject 适用于 IWbemClassObject类型的对象的枚举器。 它类似于标准 COM 枚举器,例如 IEnumVariant
IMofCompiler 此接口通过 Mofd.dll实现,提供 MOF 编译器使用的 COM 接口以及编译 MOF 文件的任何其他应用程序。
IUnsecuredApartment 用于简化从客户端进程进行异步调用的过程。
IWbemBackupRestore 备份和还原 WMI 存储库的内容。
IWbemCallResult 用于 IWbemServices 接口的半异步 调用。 进行此类调用时,调用的 IWbemServices 方法会立即返回,并返回 IWbemCallResult 对象。
IWbemCausalityAnalysis 跟踪从父请求生成的子请求。
IWbemClassObject 包含和作类定义和类对象实例。 开发人员不需要实现此接口;WMI 提供其实现。
IWbemConfigureRefresher 由客户端代码用来在刷新器中添加或删除枚举器、对象和嵌套刷新器。
IWbemContext (可选)在向 Windows 管理提交 IWbemServices 调用时,用于向提供程序传达其他上下文信息。
IWbemDecoupledBasicEventProvider 向 WMI 注册分离提供程序。
IWbemDecoupledRegistrar 将分离的提供程序与 WMI 相关联。 此接口允许进程托管的提供程序定义接口的互作性生存期,并与其他提供程序共存。
IWbemEventConsumerProvider 为事件使用者提供程序提供主接口。 通过此接口和 FindConsumer 方法,事件使用者提供程序可以指示哪些事件使用者应接收给定事件。
IWbemEventProvider 用于启动与事件提供程序的通信。
IWbemEventProviderQuerySink (可选)由想要了解当前处于活动状态的事件查询筛选器类型的事件提供程序实现,以优化性能。
IWbemEventProviderSecurity (可选)由想要限制使用者访问其事件的事件提供程序实现。
IWbemEventSink 使用受限的查询集启动与事件提供程序的通信。 此接口扩展 IWbemObjectSink,提供处理安全性和性能的新方法。
IWbemHiPerfProvider 使提供程序能够提供可刷新的对象和枚举器。
IWbemHiPerfEnum 在刷新器作中用于提供对实例对象的枚举的快速访问。
IWbemLocator 获取指向特定主计算机上的 WMI IWbemServices 接口的初始命名空间指针。
IWbemObjectAccess 提供对对象的方法和属性的访问权限。 IWbemObjectAccess 对象是由 刷新程序更新的实例的容器。
IWbemObjectSink 用于接收 IWbemServices 和某些类型的事件通知的结果。
IWbemObjectTextSrc 用于将 IWbemClassObject 实例转换为不同的文本格式和不同文本格式。
IWbemPropertyProvider 支持检索和更新 WMI 类实例中的单个属性。
IWbemProviderIdentity 如果提供程序使用多个 名称__Win32Provider的多个实例)注册自己,则由事件提供程序实现,其 CLSID 值。 该类提供用于区分应使用哪个命名提供程序的机制。
IWbemProviderInit 用于初始化提供程序。
IWbemProviderInitSink 由 WMI 实现,提供程序调用以报告初始化状态。
IWbemQualifierSet 充当单个属性或整个对象(类或实例)的整个命名限定符集的容器。
IWbemQuery 提供一个入口点,通过该入口点可以分析 WMI 查询语言(WQL)查询。
IWbemRefresher 提供一个入口点,通过该入口点可以刷新可刷新对象(如枚举器或刷新器对象)。
IWbemServices 由客户端和提供程序用来访问 WMI 服务。 该接口仅由 WMI 实现,并且是主 WMI 接口。
IWbemStatusCodeText 提取错误代码的文本字符串说明或发生错误的子系统的名称。
IWbemUnboundObjectSink 由所有逻辑事件使用者实现。 它是一个简单的接收器接口,可接受事件对象的传递。

 

注意

许多 WMI COM 函数返回记录为命名常量的数字错误代码。 这些常量在 PSDK WMI\Include 文件夹中的 Wbemcli.h 中定义。 有关详细信息,请参阅 WMI 返回代码

 

有关 COM 编程的以下主题的详细信息,请参阅 组件开发

  • 接口和对象设计。
  • 实现 IUnknown
  • 内存管理
  • 处理引用计数。

WMI 参考