初始化提供程序

必须为提供程序编写代码的第一个任务是初始化过程,它涵盖提供程序必须执行的任何任务,允许它从 WMI 发送和接收信息、控制托管对象和执行其他任务。 每种类型的提供程序都有一组不同的任务,它必须执行,并具有一组随附的唯一接口。

但是,所有提供程序都通过 IWbemProviderInit 接口进行初始化,并通过 IWbemProviderInitSink 接口通知 WMI 其初始化状态。

以下过程介绍如何初始化提供程序。

初始化提供程序

  1. 为提供程序实现 IWbemProviderInit::Initialize

    当 WMI 确定客户端需要提供程序的服务时,WMI 通过调用 IWbemProviderInit::Initialize 方法加载提供程序。

  2. 实现属于您提供程序类型特有的接口。

  3. 通知 WMI 你的提供程序已完成初始化,通过调用 IWbemProviderInitSink::SetStatus

    IWbemProviderInit::Initialize 的所有实现都必须调用 IWbemProviderInitSink::SetStatus 以将初始化状态报告为 WMI。 SetStatus 方法允许 WMI 确定提供程序是否已准备好接收请求,以及提供程序准备好接收的请求类型。

以下过程介绍如何报告成功的初始化。

报告成功的初始化

  • SetStatusIStatus参数设置为WBEM_S_INITIALIZED

    通过返回 WBEM_S_INITIALIZED,提供程序表示愿意处理来自应用程序、WMI 和其他提供程序的请求。 收到WBEM_S_INITIALIZED后,WMI 对提供程序上的 IWbemProviderInit::QueryInterface 方法进行调用。 此查询检索指向提供程序主接口的指针。

以下过程介绍如何在初始化期间报告错误。

在初始化期间报告错误

  • 设置SetStatusIStatus参数为WBEM_E_FAILED。 WMI 视图提供程序如果返回 WBEM_E_FAILED,则视为不正常工作。

    WMI 要么在获取到提供程序主接口的指针后,要么在初始化失败后释放 IWbemProviderInit 指针。

开发 WMI 提供程序

设置命名空间安全描述符

保护提供商