Condividi tramite


Ottimizzazione di un provider di eventi

Un provider di eventi può dedicare molto tempo alla creazione di eventi. Se nessuna applicazione client usa gli eventi creati, il provider sta sprecare risorse di sistema. WMI spende inoltre una notevole quantità di risorse di analisi e invio di query complesse al provider appropriato. Per evitare lo spreco di risorse di sistema e migliorare le prestazioni del provider di eventi, è possibile implementare l'interfaccia IWbemEventProviderQuerySink. IWbemEventProviderQuerySink monitora le query registrate dalle applicazioni client con WMI usando i metodiNewQuery e CancelQuery. Monitorando le query client registrate, il provider può determinare quali, se presenti, messaggi devono essere inviati a WMI.

WMI chiama NewQuery in un provider di eventi quando un cliente consumer registra una query di filtro eventi contenente riferimenti agli eventi supportati da tale provider di eventi. Pertanto, il provider di eventi responsabile degli eventi di modifica dell'istanza per la classe EmailClass può essere configurato per generare notifiche solo per il mittente. Quando il provider riceve una query che richiede la notifica delle modifiche apportate alla proprietà oggetto, il provider può iniziare a generare tali notifiche. In questo scenario, WMI non è tenuto a scartare le notifiche che segnalano solo le modifiche del destinatario .

Analogamente, WMI chiama CancelQuery in un provider di eventi quando un consumer client annulla la registrazione di una query di filtro eventi che contiene riferimenti agli eventi supportati dal provider di eventi. Lo scopo di CancelQuery è che il provider di eventi aggiorni l'elenco degli eventi da inviare.

Nota

Se il provider supporta sia IWbemEventProvider che IWbemEventProviderQuerySink, assicurarsi che l'implementazione del metodo IUnknown::QueryInterface restituisca puntatori a entrambe le interfacce.