Freigeben über


Optimieren eines Ereignisanbieters

Ein Ereignisanbieter kann viel Zeit für das Erstellen von Ereignissen aufwenden. Wenn keine Clientanwendungen die erstellten Ereignisse verwenden, verschwendet der Anbieter Systemressourcen. Darüber hinaus gibt WMI eine beträchtliche Menge an Ressourcen aus, um komplexe Abfragen zu analysieren und an den entsprechenden Anbieter zu senden. Um die Verschwendung von Systemressourcen zu vermeiden und die Leistung Ihres Ereignisanbieters zu verbessern, können Sie die IWbemEventProviderQuerySink-Schnittstelle implementieren. IWbemEventProviderQuerySink überwacht die Abfragen, die Clientanwendungen mithilfe der Methoden NewQuery und CancelQuery bei WMI registrieren. Durch die Überwachung der registrierten Clientabfragen kann Ihr Anbieter bestimmen, ob Nachrichten an WMI gesendet werden müssen.

WMI ruft NewQuery für einen Ereignisanbieter auf, wenn ein Clientconsumer eine Ereignisfilterabfrage registriert, die Verweise auf von diesem Ereignisanbieter unterstützte Ereignisse enthält. Daher kann der Ereignisanbieter, der für Instanzänderungsereignisse für die EmailClass-Klasse verantwortlich ist, so eingerichtet werden, dass nur Benachrichtigungen für Absender generiert werden. Wenn der Anbieter eine Abfrage empfängt, die eine Benachrichtigung über Änderungen an der Subject-Eigenschaft anfordert, kann der Anbieter damit beginnen, diese Benachrichtigungen zu generieren. In diesem Szenario ist WMI nicht erforderlich, um die Benachrichtigungen zu verwerfen, die nur Änderungen des Empfängers melden.

Entsprechend ruft WMI CancelQuery für einen Ereignisanbieter auf, wenn ein Clientconsumer die Registrierung einer Ereignisfilterabfrage aufhebt, die Verweise auf vom Ereignisanbieter unterstützte Ereignisse enthält. Der Zweck von CancelQuery besteht darin, dass der Ereignisanbieter die Liste der zu versendenden Ereignisse aktualisiert.

Hinweis

Wenn Ihr Anbieter sowohl IWbemEventProvider als auch IWbemEventProviderQuerySink unterstützt, stellen Sie sicher, dass Ihre Implementierung der IUnknown::QueryInterface-Methode Zeiger auf beide Schnittstellen zurückgibt.