Implementazione dell'interfaccia primaria per un provider di eventi
Un provider di eventi deve implementare l'interfaccia IWbemEventProvider per generare notifiche degli eventi. WMI chiama il metodo IWbemEventProvider::P rovideEvents del provider e passa un puntatore all'oggetto sink, che è un'implementazione dell'interfaccia IWbemObjectSink . Quando il provider di eventi è pronto per generare una notifica, il provider chiama il metodo IWbemObjectSink::Indicate .
Un provider di eventi deve inserire le notifiche generate tramite IWbemEventProvider negli oggetti evento. È necessario implementare gli oggetti evento come voci in una matrice di interfacce IWbemClassObject rappresentate dal parametro ppObjArray del metodo Indicate . Poiché IWbemClassObjects sono oggetti COM, il provider deve incrementare il conteggio dei riferimenti per il sink chiamando il metodo IWbemObjectSink::AddRef . I provider di eventi che devono fornire molte notifiche ,ad esempio 400 eventi, devono creare un oggetto evento univoco per ogni notifica generando una nuova istanza o clonando uno esistente. WMI non contiene mai un oggetto evento oltre il completamento della chiamata a Indicare e non ha requisiti speciali per AddRef oltre lo standard COM.
Quando si implementa un provider di eventi, tenere presenti le linee guida seguenti:
Non apportare modifiche alle classi durante la manutenzione di una chiamata client.
Non eseguire chiamate correlate agli eventi, ad esempio una chiamata che modifica un filtro eventi.
Elaborare tutte le richieste che il servizio gestione Windows genera, ad esempio CancelQuery, prima di rieseguire un evento.
Se non si elabora la richiesta, è possibile che la ripetizione dell'evento impedisca l'accettazione dell'evento.
Non chiamare mai IWbemObjectSink::SetStatus dall'interno di un provider.