适用于 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 的 COM 接口访问 WMI。

接口 说明
IEnumWbemClassObject 适用于 IWbemClassObject 类型的对象的枚举器。 它类似于标准 COM 枚举器,例如 IEnumVariant
IMofCompiler 此接口由 Mofd.dll 实现,它提供一个 COM 接口供 MOF 编译器和任何其他编译 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 如果提供程序使用多个具有相同 CLSID 值的 Name(__Win32Provider 的多个实例)注册自身,则由事件提供程序实现。 该类提供一个机制用于辨别应使用的命名提供程序。
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 参考