在 C++ 中创建 Parameters 对象

IWbemServices::ExecMethodExecMethodAsync 方法需要 __PARAMETERS 系统类作为 pInParams 中的容器(如果它们正在执行的方法有任何输入参数)。

以下过程介绍如何创建 __PARAMETERS 系统类的实例来保存参数信息。

创建 __PARAMETERS 实例

  1. 确定包含方法定义的类的类路径。

  2. 使用类路径和从 IWbemProviderInit::Initialize 传入的 IWbemServices 指针,调用 IWbemClassObject:: GetMethod 来检索输入和输出参数类。

    GetMethod 方法返回一个 IWbemClassObject 指针,用于访问其中的每个类。

  3. 使用输出类的 IWbemClassObject 指针,调用 IWbemClassObject::SpawnInstance 来创建该类的实例。

  4. 通过设置对应于输出值的属性来填充类实例,并在方法有返回值的情况下设置 ReturnValue 属性。

  5. 通过 IWbemObjectSink::Indicate 方法将 __PARAMETERS 实例传递回调用方。

在方法提供程序确定输入参数正确后,strMethodName 指向的方法可能仍会成功或失败。 某些方法提供程序会生成第二个线程来实现该方法,这样该方法的实际成功或失败最终就会通过 IWbemObjectSink::SetStatus 报告给调用方。 请注意,IWbemObjectSink::SetStatus 不接收提供程序方法的返回代码。 但是,它接收实际调用-返回机制的返回代码,并且它仅用于验证调用是否发生或者调用是否由于机制原因而失败。

调用一个方法

IWbemCallResult::GetResultObject

IWbemServices::ExecMethodAsync

IWbemServices::ExecMethod