Share via


Erstellen von Parameterobjekten in C++

Die Methoden IWbemServices::ExecMethod und IWbemServices::ExecMethodAsync erfordern die __PARAMETERS-Systemklasse als Container in pInParams, wenn die ausgeführte Methode Eingabeargumente enthält.

Im folgenden Verfahren wird beschrieben, wie Sie eine Instanz der __PARAMETERS-Systemklasse erstellen, um Parameterinformationen zu speichern.

So erstellen Sie eine Instanz von __PARAMETERS

  1. Bestimmen Sie den Klassenpfad für die Klasse, die die Methodendefinition enthält.

  2. Rufen Sie mithilfe des Klassenpfads und des von IWbemProviderInit::Initialize übergebenen IWbemServices-Zeigers IWbemClassObject::GetMethod auf, um die Eingabe- und Ausgabeparameterklassen abzurufen.

    Die GetMethod-Methode gibt einen IWbemClassObject-Zeiger für den Zugriff auf jede dieser Klassen zurück.

  3. Rufen Sie mithilfe des IWbemClassObject-Zeigers für die Ausgabeklasse IWbemClassObject::SpawnInstance auf, um eine Instanz der Klasse zu erstellen.

  4. Füllen Sie die Klasseninstanz auf, indem Sie die den Ausgabewerten entsprechenden Eigenschaften und, wenn es einen Rückgabewert für die Methode gibt, die ReturnValue-Eigenschaft festlegen.

  5. Übergeben Sie die __PARAMETERS-Instanz über die IWbemObjectSink::Indicate-Methode zurück an den Aufrufer.

Auch nachdem ein Methodenanbieter die Richtigkeit der Eingabeparameter festgestellt hat, kann die Methode, auf die strMethodName zeigt, weiterhin erfolgreich sein oder fehlschlagen. Einige Methodenanbieter erzeugen einen zweiten Thread zum Implementieren der Methode, sodass der tatsächliche Erfolg oder Fehlschlag der Methode über IWbemObjectSink::SetStatus an den Aufrufer gemeldet wird. Beachten Sie, dass IWbemObjectSink::SetStatus nicht den Rückgabecode der Anbietermethode empfängt. SetStatus empfängt jedoch den Rückgabecode des eigentlichen Aufrufrückgabemechanismus und eignet sich nur, um zu verifizieren, dass der Aufruf stattgefunden hat oder aus mechanischen Gründen fehlgeschlagen ist.

Aufrufen einer Methode

IWbemCallResult::GetResultObject

IWbemServices::ExecMethodAsync

IWbemServices::ExecMethod