Condividi tramite


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.