IWbemObjectSink-Schnittstelle (wbemcli.h)
Die IWbemObjectSink-Schnittstelle erstellt eine Senkenschnittstelle, die alle Arten von Benachrichtigungen innerhalb des WMI-Programmiermodells empfangen kann. Clients müssen diese Schnittstelle implementieren, um sowohl die Ergebnisse der asynchronen Methoden von IWbemServices als auch bestimmte Arten von Ereignisbenachrichtigungen zu empfangen. Anbieter verwenden diese Schnittstelle, um Ereignisse und Objekte für WMI bereitzustellen, implementieren sie jedoch nicht.
In der Regel rufen Anbieter eine Implementierung auf, die ihnen von WMI bereitgestellt wird. Rufen Sie in diesen Fällen Indicate auf, um Objekte für den WMI-Dienst bereitzustellen. Rufen Sie danach SetStatus auf, um das Ende der Benachrichtigungssequenz anzugeben. Sie können auch SetStatus aufrufen, um Fehler anzuzeigen, wenn die Senke keine Objekte enthält.
Beim Programmieren asynchroner Clients von WMI stellt der Benutzer die Implementierung bereit. WMI ruft die Methoden auf, um Objekte zu übermitteln und den Status des Ergebnisses festzulegen.
Vererbung
Die IWbemObjectSink-Schnittstelle erbt von der IUnknown-Schnittstelle . IWbemObjectSink verfügt auch über folgende Membertypen:
Methoden
Die IWbemObjectSink-Schnittstelle weist diese Methoden auf.
IWbemObjectSink::Indicate Wird von einer Quelle aufgerufen, um eine Benachrichtigung bereitzustellen. |
IWbemObjectSink::SetStatus Wird von Quellen aufgerufen, um das Ende einer Benachrichtigungssequenz anzugeben oder andere Statuscodes an die Senke zu senden. |
Bemerkungen
Führen Sie beim Implementieren einer Ereignisabonnementsenke (IWbemObjectSink oder IWbemEventSink) keinen Aufruf von WMI aus den Methoden Indicate oder SetStatus für das Senkenobjekt aus. Beispielsweise kann der Aufruf von IWbemServices::CancelAsyncCall zum Kündigen der Senke innerhalb einer Implementierung von Indicate zu Konflikten mit dem WMI-Zustand führen. 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.
Beispiele
Das folgende Codebeispiel ist eine einfache Implementierung einer Objektsenke. Dieses Beispiel kann mit IWbemServices::ExecQueryAsync oder IWbemServices::CreateInstanceEnumAsync verwendet werden, um die zurückgegebenen Instanzen zu empfangen:
C++ |
---|
|
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows Vista |
Unterstützte Mindestversion (Server) | Windows Server 2008 |
Zielplattform | Windows |
Kopfzeile | wbemcli.h (include Wbemidl.h) |
Weitere Informationen
Durchführen eines asynchronen Aufrufs mit C++