Creación de objetos de parámetro en C++

Los métodos IWbemServices::ExecMethod o ExecMethodAsync requieren la clase del sistema __PARAMETERS como contenedor en pInParams si el método que están ejecutando tiene argumentos de entrada.

En este procedimiento se describe cómo crear una instancia de la clase del sistema __PARAMETERS para contener información de parámetros.

Procedimientos para crear una instancia de __PARAMETERS

  1. Determine el trazado de clase de la clase que contiene la definición del método.

  2. Con el trazado de clase y el puntero IWbemServices pasados desde IWbemProviderInit::Initialize, llame a IWbemClassObject::GetMethod para recuperar las clases de parámetros de entrada y salida.

    El método GetMethod devuelve un puntero IWbemClassObject para tener acceso a cada una de estas clases.

  3. Con el puntero IWbemClassObject para la clase de salida, llame a IWbemClassObject::SpawnInstance para crear una instancia de la clase.

  4. Rellene la instancia de clase mediante el establecimiento de las propiedades correspondientes a los valores de salida y, si hay un valor devuelto para el método, la propiedad ReturnValue.

  5. Vuelva a pasar la instancia __PARAMETERS al autor de la llamada mediante el método IWbemObjectSink::Indicate.

Después de que un proveedor de métodos determine que los parámetros de entrada son correctos, el método al que apunta strMethodName podría seguir pasando o producir un error. Algunos proveedores de métodos generan un segundo subproceso para implementar el método de modo que su éxito o error reales terminen siendo notificados al autor de la llamada mediante IWbemObjectSink::SetStatus. Tenga en cuenta que IWbemObjectSink::SetStatus no recibe el código de retorno del método de proveedor. Pero recibe el código de retorno del mecanismo real de devolución de llamada y solo es útil para comprobar que se produjo la llamada o que se produjo un error por motivos mecánicos.

Llamar a un método WMI

IWbemCallResult::GetResultObject

IWbemServices::ExecMethodAsync

IWbemServices::ExecMethod