Création d’objets Parameters en C++

Si la méthode qu’elles exécutent a des arguments d’entrée, les méthodes IWbemServices::ExecMethod ou ExecMethodAsync nécessitent la classe système \_\_PARAMETERS en tant que conteneur dans pInParams.

La procédure suivante explique comment créer une instance de la classe système __PARAMETERS pour contenir des informations de paramètre.

Pour créer une instance __PARAMETERS

  1. Déterminez le chemin d’accès de la classe pour celle contenant la définition de méthode.

  2. À l’aide du chemin de la classe et du pointeur IWbemServices transmis à partir de IWbemProviderInit::Initialize, appelez IWbemClassObject::GetMethod pour récupérer les classes de paramètres d’entrée et de sortie.

    La méthode GetMethod retourne un pointeur IWbemClassObject pour accéder à chacune de ces classes.

  3. En utilisant le pointeur IWbemClassObject sur la classe de sortie, appelez IWbemClassObject::SpawnInstance pour créer un instance de la classe.

  4. Remplissez la classe instance en définissant les propriétés correspondant aux valeurs de sortie et, s’il existe une valeur de retour pour la méthode, la propriété ReturnValue.

  5. Transmettez l’instance __PARAMETERS à l’appelant via la méthode IWbemObjectSink::Indicate.

Une fois qu’un fournisseur de méthodes a déterminé que les paramètres d’entrée sont corrects, la méthode pointée par strMethodName peut toujours passer ou échouer. Certains fournisseurs de méthodes génèrent un deuxième thread pour implémenter la méthode afin que la réussite ou l’échec réel de la méthode finisse par être signalé à l’appelant via IWbemObjectSink::SetStatus. Notez que IWbemObjectSink::SetStatus ne reçoit pas de code de retour de la méthode du fournisseur. Toutefois, il en reçoit un du mécanisme de retour d’appel réel, et n’est utile que pour vérifier que l’appel a eu lieu ou qu’il a échoué pour des raisons mécaniques.

Appel d'une méthode

IWbemCallResult::GetResultObject

IWbemServices::ExecMethodAsync

IWbemServices::ExecMethod