Freigeben über


IWbemObjectSink::Indicate-Methode (wbemcli.h)

Die Indicate-Methode wird von einer Quelle aufgerufen, um eine Benachrichtigung bereitzustellen. In der Regel ruft WMI die Clientimplementierung dieser Schnittstelle auf, nachdem der Client eine der asynchronen Methoden von IWbemServices ausgeführt hat. In anderen Fällen rufen verschiedene Anbietertypen eine von WMI exportierte Implementierung auf, um Ereignisse zu übermitteln. Daher muss Clientcode diese Schnittstelle in einigen Fällen implementieren und in anderen Fällen die Implementierung einer anderen Komponente verwenden.

Verwenden Sie diese Schnittstelle und Methode in Verbindung mit den asynchronen Methoden der IWbemServices-Schnittstelle .

Clients und Anbieter müssen diese Schnittstelle implementieren, um Benachrichtigungen zu empfangen oder die asynchronen Methoden von IWbemServices auszuführen. Weitere Informationen finden Sie unter Aufrufen einer Methode.

Syntax

HRESULT Indicate(
  [in] long             lObjectCount,
  [in] IWbemClassObject **apObjArray
);

Parameter

[in] lObjectCount

Anzahl der Objekte im folgenden Array von Zeigern.

[in] apObjArray

Array von Zeigern auf IWbemClassObject-Schnittstellen . Der Arrayspeicher selbst ist schreibgeschützt und gehört dem Aufrufer der -Methode. Da es sich hierbei um einen in-Parameter handelt, hat die Implementierung die Möglichkeit, IWbemClassObject::AddRef für einen beliebigen Objektzeiger im Array aufzurufen und vor der Rückgabe festzuhalten, ob die Objekte nach der Rückgabe der Methode gemäß COM-Regeln verwendet werden. Wenn die -Objekte nur für die Dauer des Aufrufs "Angeben" verwendet werden, müssen Sie AddRef nicht für jeden Objektzeiger aufrufen.

Rückgabewert

Diese Methode gibt ein HRESULT zurück, das den Status des Methodenaufrufs angibt. Die folgende Liste listet den Wert auf, der in einem HRESULT enthalten ist.

Hinweise

Rufen Sie beim Implementieren einer Ereignisabonnementsenke (IWbemObjectSink oder IWbemEventSink) WMI nicht aus der Indicate-Methode für das Senkenobjekt auf. Beispielsweise kann das Aufrufen von IWbemServices::CancelAsyncCall innerhalb einer Implementierung von Indicate 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.

Wenn ein Ereignisanbieter Angeben aufruft, um ein Ereignis bereitzustellen, kann der Aufruf mit WBEM_E_SERVER_TOO_BUSY fehlschlagen. Der Anbieter kann auf diese Nachricht reagieren, indem er das Ereignis erneut auslöst.

Hinweis Da der Rückruf an die Senke möglicherweise nicht auf der gleichen Authentifizierungsebene zurückgegeben wird, die der Client benötigt, wird empfohlen, semisynchron anstelle der asynchronen Kommunikation zu verwenden. Weitere Informationen finden Sie unter Aufrufen einer Methode.
 

Anforderungen

   
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::SetStatus

IWbemObjectSinkEx

IWbemServices::ExecQueryAsync