IWbemObjectSink::SetStatus-Methode (wbemcli.h)

Die IWbemObjectSink::SetStatus-Methode wird von Quellen aufgerufen, um das Ende einer Benachrichtigungssequenz anzugeben oder andere status Codes an die Senke zu senden. Die IWbemObjectSink::Indicate-Methode wurde möglicherweise vor dem Aufruf von SetStatus aufgerufen oder nicht.

In der Regel implementiert ein Client die IWbemObjectSink-Schnittstelle und führt IWbemServices-Methoden aus, die ihre Ergebnisse mithilfe der IWbemObjectSink-Schnittstelle zurückgeben. Während dieses Vorgangs ruft WMI so oft wie erforderlich auf, gefolgt von einem endgültigen Aufruf von SetStatus und in vielen Fällen Release.

Syntax

HRESULT SetStatus(
  [in] long             lFlags,
  [in] HRESULT          hResult,
  [in] BSTR             strParam,
  [in] IWbemClassObject *pObjParam
);

Parameter

[in] lFlags

Bitmaske von status Informationen. Die status des Vorgangs kann durch Untersuchen des hResult-Parameters abgerufen werden.

WBEM_STATUS_COMPLETE

Der Vorgang wurde abgeschlossen.

WBEM_STATUS_PROGRESS

Der Vorgang wird immer noch ausgeführt.

WBEM_STATUS_REQUIREMENTS

Wird beim Aktivieren der Nachfilterung verwendet.

[in] hResult

Dieser Parameter wird auf das HRESULT des asynchronen Vorgangs oder der asynchronen Benachrichtigung festgelegt. Dies ist entweder ein Fehlercode, wenn ein Fehler aufgetreten ist, oder der Umfang des Fortschritts, der bei einem asynchronen Aufruf erzielt wurde.

[in] strParam

Empfängt einen Zeiger auf einen schreibgeschützten BSTR, wenn der ursprüngliche asynchrone Vorgang eine Zeichenfolge zurückgibt. Wenn Sie beispielsweise PutInstanceAsync verwenden, wird SetStatus aufgerufen, wobei dieser Parameter auf den Objektpfad des neu erstellten instance festgelegt ist.

[in] pObjParam

In Fällen, in denen ein komplexer Fehler oder status -Objekt zurückgegeben wird, enthält dies einen Zeiger auf das Fehlerobjekt. Wenn das -Objekt nach der Rückgabe von SetStatus erforderlich ist, muss das aufgerufene Objekt die AddRef-Methode für den Zeiger verwenden, bevor das aufgerufene Objekt zurückgegeben wird.

Rückgabewert

Diese Methode gibt ein HRESULT zurück, das den Status des Methodenaufrufs angibt. In der folgenden Liste ist der in einem HRESULT enthaltene Wert aufgeführt.

Hinweise

Wenn Sie eine Ereignisabonnementsenke (IWbemObjectSink oder IWbemEventSink) implementieren, rufen Sie WMI nicht aus der SetStatus-Methode für das Senkenobjekt auf. Beispielsweise kann der Aufruf von IWbemServices::CancelAsyncCall innerhalb einer Implementierung von SetStatus den WMI-Zustand beeinträchtigen. Legen Sie zum Kündigen eines Ereignisabonnements ein Flag fest, und rufen Sie IWbemServices::CancelAsyncCall aus einem anderen Thread oder Objekt auf. Für Implementierungen, die sich nicht auf eine Ereignissenke beziehen, z. B. Objekt-, Enumerations- und Abfrageabrufe, können Sie Rückrufe an WMI ausführen.

Senkenimplementierungen sollten die Ereignisbenachrichtigung innerhalb von 100 ms verarbeiten, da der WMI-Thread, der die Ereignisbenachrichtigung übermittelt, keine anderen Aufgaben ausführen kann, bis das Senkenobjekt die Verarbeitung abgeschlossen hat. Wenn die Benachrichtigung einen großen Verarbeitungsumfang erfordert, kann die Senke eine interne Warteschlange für einen anderen Thread verwenden, um die Verarbeitung auszuführen. Für Implementierungen, die sich nicht auf eine Ereignissenke beziehen, z. B. Objekt-, Enumerations- und Abfrageabrufe, können Sie Rückrufe an WMI ausführen.

Um zwischengeschaltete status Updates über die SetStatus-Implementierung des Clients zu erhalten, müssen Sie in Ihrem Aufruf einer Anbieter-/Dienstmethode WBEM_FLAG_SENT_STATUS angeben. Die genaue status kann ermittelt werden, indem die HIWORD- und LOWORD-Werte von hResult separat untersucht werden. Der LOWORD-Wert (hResult) enthält den bisher erzielten Fortschritt, und der HIWORD-Wert (hResult) enthält die Summe.

Wenn Sie beim Aufrufen Ihres Anbieters oder Ihrer Dienstmethode keine WBEM_FLAG_SEND_STATUS angeben, erhalten Sie garantiert nur einen Aufruf von SetStatus.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows Vista
Unterstützte Mindestversion (Server) Windows Server 2008
Zielplattform Windows
Kopfzeile wbemcli.h (include Wbemidl.h)
Bibliothek Wbemuuid.lib
DLL Fastprox.dll

Weitere Informationen

IWbemObjectSink

IWbemObjectSink::Indicate

IWbemObjectSinkEx

IWbemServices::ExecQueryAsync

WBEM_STATUS_TYPE