Interfaccia IWbemObjectSink (wbemcli.h)
L'interfaccia IWbemObjectSink crea un'interfaccia sink che può ricevere tutti i tipi di notifiche all'interno del modello di programmazione WMI. I client devono implementare questa interfaccia per ricevere i risultati dei metodi asincroni di IWbemServices e tipi specifici di notifiche degli eventi. I provider usano, ma non implementano questa interfaccia per fornire eventi e oggetti a WMI.
In genere, i provider chiamano un'implementazione fornita da WMI. In questi casi, chiamare Indica per fornire oggetti al servizio WMI. Successivamente, chiamare SetStatus per indicare la fine della sequenza di notifica. È anche possibile chiamare SetStatus per indicare gli errori quando il sink non ha oggetti.
Quando si programmano client asincroni di WMI, l'utente fornisce l'implementazione. WMI chiama i metodi per recapitare oggetti e impostare lo stato del risultato.
Ereditarietà
L'interfaccia IWbemObjectSink eredita dall'interfaccia IUnknown . IWbemObjectSink include anche questi tipi di membri:
Metodi
L'interfaccia IWbemObjectSink include questi metodi.
IWbemObjectSink::Indicate Chiamato da un'origine per fornire una notifica. |
IWbemObjectSink::SetStatus Chiamata dalle origini per indicare la fine di una sequenza di notifica o per inviare altri codici di stato al sink. |
Commenti
Quando si implementa un sink di sottoscrizione di eventi (IWbemObjectSink o IWbemEventSink), non chiamare in WMI dai metodi Indicate o SetStatus nell'oggetto sink. Ad esempio, chiamando IWbemServices::CancelAsyncCall per annullare il sink dall'interno di un'implementazione di Indica può interferire con lo stato WMI. Per annullare una sottoscrizione di eventi, impostare un flag e chiamare IWbemServices::CancelAsyncCall da un altro thread o oggetto. Per le implementazioni che non sono correlate a un sink di eventi, ad esempio oggetti, enumerazioni e recupero di query, è possibile richiamare in WMI.
Le implementazioni sink devono elaborare la notifica dell'evento entro 100 MSEC perché il thread WMI che recapita la notifica dell'evento non può eseguire altre operazioni fino a quando l'oggetto sink non è stato completato l'elaborazione. Se la notifica richiede una grande quantità di elaborazione, il sink può usare una coda interna per un altro thread per gestire l'elaborazione.
Esempio
L'esempio di codice seguente è una semplice implementazione di un sink di oggetti. Questo esempio può essere usato con IWbemServices::ExecQueryAsync o IWbemServices::CreateInstanceEnumAsync per ricevere le istanze restituite:
C++ |
---|
|
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows Vista |
Server minimo supportato | Windows Server 2008 |
Piattaforma di destinazione | Windows |
Intestazione | wbemcli.h (include Wbemidl.h) |
Vedi anche
Creazione di una chiamata asincrona con C++