Optimera en händelseleverantör
En händelseleverantör kan ägna mycket tid åt att skapa händelser. Om inga klientprogram använder de skapade händelserna slösar providern bort systemresurser. WMI spenderar dessutom en betydande mängd resurser på att parsa och skicka komplexa frågor till lämplig provider. För att undvika slöseri med systemresurser och förbättra prestanda för din händelseprovider kan du implementera IWbemEventProviderQuerySink- gränssnitt. IWbemEventProviderQuerySink övervakar de frågor som klientprogram registrerar med WMI med hjälp av metoderna NewQuery och CancelQuery. Genom att övervaka registrerade klientfrågor kan leverantören avgöra vad om några meddelanden måste skickas till WMI.
WMI anropar NewQuery på en händelseprovider när en klientkonsument registrerar en händelsefilterfråga som innehåller referenser till händelser som stöds av händelseprovidern. Händelseprovidern som ansvarar för instansändringshändelser för klassen EmailClass kan därför konfigureras för att generera meddelanden endast för avsändare. När providern tar emot en fråga som begär meddelande om ändringar i ämne egenskap kan providern börja generera dessa meddelanden. I det här scenariot behöver inte WMI ignorera meddelanden som enbart rapporterar ändringar för mottagare .
På samma sätt anropar WMI CancelQuery på en händelseprovider när en klientkonsument avregistrerar en händelsefilterfråga som innehåller referenser till händelser som stöds av händelseprovidern. Syftet med CancelQuery är att händelseprovidern ska uppdatera listan över vilka händelser som ska skickas ut.
Not
Om providern stöder både IWbemEventProvider och IWbemEventProviderQuerySinkkontrollerar du att implementeringen av metoden IUnknown::QueryInterface returnerar pekare till båda gränssnitten.