Optymalizacja dostawcy zdarzeń
Dostawca wydarzeń może poświęcić dużo czasu na tworzenie wydarzeń. Jeśli żadne aplikacje klienckie nie używają utworzonych zdarzeń, dostawca marnuje zasoby systemowe. Ponadto usługa WMI poświęca znaczną ilość zasobów na analizowanie i wysyłanie złożonych zapytań do odpowiedniego dostawcy. Aby uniknąć marnowania zasobów systemowych i zwiększenia wydajności dostawcy zdarzeń, możesz zaimplementować interfejs IWbemEventProviderQuerySink. IWbemEventProviderQuerySink monitoruje zapytania rejestrowane przez aplikacje klienckie w usłudze WMI przy użyciu metod NewQuery i CancelQuery. Monitorując zarejestrowane zapytania klienta, dostawca może określić, czy jakiekolwiek komunikaty muszą być wysyłane do usługi WMI.
Usługa WMI wywołuje NewQuery dostawcy zdarzeń, gdy klient rejestruje zapytanie filtru zdarzeń zawierające odwołania do zdarzeń obsługiwanych przez tego dostawcę zdarzeń. Dlatego dostawcę zdarzeń, odpowiedzialnego za zdarzenia modyfikacji wystąpienia dla klasy EmailClass, można skonfigurować do generowania powiadomień tylko dla nadawcy. Gdy dostawca otrzyma zapytanie proszące o powiadomienie o zmianach we właściwości podmiotu , dostawca może rozpocząć tworzenie tych powiadomień. W tym scenariuszu usługa WMI nie musi odrzucać powiadomień, które zgłaszają zmiany wyłącznie w adresacie .
Podobnie WMI wywołuje CancelQuery dostawcy zdarzeń, gdy klient wyrejestruje zapytanie filtru zdarzeń zawierające odwołania do zdarzeń obsługiwanych przez dostawcę zdarzeń. Celem CancelQuery jest umożliwienie dostawcy zdarzeń zaktualizowania listy zdarzeń, które powinny być wysyłane.
Notatka
Jeśli dostawca obsługuje zarówno IWbemEventProvider, jak i IWbemEventProviderQuerySink, upewnij się, że implementacja IUnknown::QueryInterface metoda zwraca wskaźniki do obu interfejsów.