初始化提供程序
为提供程序编码必须进行的首要任务是初始化过程,这涵盖了提供程序必须执行的任何任务,这些任务使提供程序能够将信息发送到 WMI 并接收来自其的信息、控制托管对象以及执行其他任务。 每种类型的提供程序都有一组必须执行的不同任务,并附带一组唯一接口。
但是,所有提供程序会通过 IWbemProviderInit 接口初始化,并通过 IWbemProviderInitSink 接口通知 WMI 其初始化状态。
以下过程介绍如何初始化提供程序。
初始化提供程序
为提供程序实现 IWbemProviderInit::Initialize。
当 WMI 确定客户端需要提供程序的服务时,WMI 会通过调用 IWbemProviderInit::Initialize 方法加载提供程序。
实现针对提供程序类型唯一的任何接口。
通过调用 IWbemProviderInitSink::SetStatus 告知 WMI 提供程序已完成初始化。
IWbemProviderInit::Initialize 的所有实现必须调用 IWbemProviderInitSink::SetStatus 才能向 WMI 报告初始化状态。 SetStatus 方法允许 WMI 确定提供程序是否已准备好接收请求,以及确定提供程序已准备好接收的请求类型。
以下过程介绍如何报告成功的初始化。
报告成功的初始化
将 SetStatus 的 IStatus 参数设置为 WBEM_S_INITIALIZED。
通过返回 WBEM_S_INITIALIZED,提供程序指示已准备好处理来自应用程序、WMI 和其他提供程序的请求。 收到 WBEM_S_INITIALIZED 后,WMI 会对提供程序上的 IWbemProviderInit::QueryInterface 方法进行调用。 此查询检索指向提供程序的主接口的指针。
以下过程介绍如何报告初始化期间的错误。
报告初始化期间的错误
将 SetStatus 的 IStatus 参数设置为 WBEM_E_FAILED。 WMI 将返回 WBEM_E_FAILED 的提供程序视为不起作用。
在 WMI 已获取指向提供程序主接口的指针后或在初始化失败后,WMI 会释放 IWbemProviderInit 指针。
相关主题