Erstellen von Parameterobjekten in C++

Die IWbemServices::ExecMethod- oder ExecMethodAsync-Methoden erfordern die _ _ PARAMETERS-Systemklasse als Container in pInParams, wenn die von ihnen ausgeführte Methode Eingabeargumente aufweist.

Das folgende Verfahren beschreibt das Erstellen einer Instanz der _ _ PARAMETERS-Systemklasse zum Speichern von Parameterinformationen.

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 IWbemServices-Zeigers, der von IWbemProviderInit::Initializeübergeben wird, 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 Eigenschaften festlegen, die den Ausgabewerten entsprechen, und, wenn ein Rückgabewert für die Methode vorhanden ist, die ReturnValue-Eigenschaft.

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

Nachdem ein Methodenanbieter festgestellt hat, dass die Eingabeparameter korrekt sind, kann die Methode, auf die strMethodName verweist, weiterhin erfolgreich sein oder fehlschlagen. Einige Methodenanbieter führen einen zweiten Thread aus, um die Methode zu implementieren, sodass der tatsächliche Erfolg oder Fehler der Methode dem Aufrufer über IWbemObjectSink::SetStatusgemeldet wird. Beachten Sie, dass IWbemObjectSink::SetStatus nicht den Rückgabecode der Anbietermethode empfängt. Er empfängt jedoch den Rückgabecode des tatsächlichen Aufrufrückgabemechanismus und ist nur nützlich, um zu überprüfen, ob der Aufruf aufgetreten ist oder aus technischen Gründen fehlgeschlagen ist.

Aufrufen einer Methode

IWbemCallResult::GetResultObject

IWbemServices::ExecMethodAsync

IWbemServices::ExecMethod