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 sprecando le risorse di sistema. WMI spende inoltre una notevole quantità di risorse per l'analisi e l'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 metodi NewQuery e CancelQuery . Monitorando le query client registrate, il provider può determinare se è necessario inviare messaggi a WMI.
WMI chiama NewQuery in un provider di eventi quando un consumer client registra una query di filtro eventi che contiene 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 una notifica delle modifiche apportate alla proprietà dell'oggetto , il provider può iniziare a generare tali notifiche. In questo scenario, WMI non è necessario per rimuovere solo le notifiche che segnalano modifiche al 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.