Udostępnij za pośrednictwem


Odbieranie zdarzeń o każdym czasie

Możesz napisać aplikację, która może reagować na zdarzenia w dowolnym momencie. Na przykład administrator może chcieć otrzymać wiadomość e-mail, gdy określone miary wydajności spadną na serwerach sieciowych. W takim przypadku aplikacja powinna być uruchamiana przez cały czas. Jednak ciągłe uruchamianie aplikacji nie jest wydajnym wykorzystaniem zasobów systemowych. Zamiast tego usługa WMI umożliwia utworzenie stałego konsumenta zdarzeń. Konsumenci zdarzeń stałych muszą spełniać specjalne wymagania dotyczące bezpieczeństwa. Aby uzyskać więcej informacji, zobacz Zabezpieczanie zdarzeń WMI.

Trwały odbiorca zdarzeń odbiera zdarzenia do momentu, gdy jego rejestracja jest explicite anulowana.

Stały odbiorca zdarzeń to połączenie następujących klas WMI, filtrów i obiektów COM znajdujących się na twoim systemie.

  • Obiekt COM nazywany konsumentem fizycznym. WMI dostarcza kilka standardowych permanentnych odbiorników. Na przykład użytkownik zdarzenia aktywnego skryptu uruchamia skrypt, gdy zdarzenie występuje.
  • Nowa stała klasa konsumenta.
  • Wystąpienie trwałej klasy konsumenta nazywane konsumentem logicznym.
  • Filtr zawierający zapytanie dotyczące zdarzeń.
  • Połączenie między użytkownikiem a filtrem.

Właściwości odbiorcy zdarzenia logicznego określają akcje, które mają być wykonywane po powiadomieniu zdarzenia, ale nie definiują zapytań dotyczących zdarzeń, z którymi są skojarzone. Po sygnale, usługa WMI automatycznie ładuje obiekt COM, który reprezentuje permanentnego odbiorcę zdarzeń do aktywnej pamięci. Zazwyczaj występuje to podczas uruchamiania lub w odpowiedzi na zdarzenie wyzwalające. Po aktywowaniu trwały konsument zdarzeń działa jako zwykły konsument zdarzeń, ale pozostaje do czasu wyłączenia przez system operacyjny.

Możesz napisać własnego użytkownika zdarzeń stałych lub użyć wstępnie zainstalowanej standardowych klas odbiorców, takich jak ActiveScriptEventConsumer. Aby uzyskać więcej informacji, zobacz Standardowe klasy konsumentów, Monitorowanie i reagowanie na zdarzenia przy użyciu standardowych odbiorcówi Monitorowanie zdarzeń.

W poniższej procedurze opisano sposób tworzenia własnego stałego odbiorcy zdarzeń.

Aby utworzyć własnego trwałego odbiorcę zdarzeń

  1. Określ, jakiego rodzaju zdarzenia chcesz otrzymywać.

    Usługa WMI obsługuje zdarzenia wewnętrzne i zewnętrzne. Zdarzenie wewnętrzne jest zdarzeniem wstępnie zdefiniowanym przez usługę WMI, natomiast zdarzenie zewnętrzne jest zdarzeniem zdefiniowanym przez dostawcę innej firmy. Aby uzyskać więcej informacji, zobacz Określanie typu zdarzenia do otrzymywania.

  2. Zaimplementuj fizycznego konsumenta.

    Główną różnicą między aplikacją zarządzania a fizycznym użytkownikiem jest to, że użytkownik ładuje i zwalnia aplikację zarządzania, podczas gdy usługa WMI ładuje i zwalnia użytkownika fizycznego. Większość kodu powinna znajdować się u użytkownika fizycznego.

    Notatka

    Ten krok jest pierwszy w procedurze, aby ułatwić wyjaśnienie. Jeśli chodzi o kodowanie, należy utworzyć konsumenta fizycznego jako ostatniego. Dzięki temu można określić parametry i logikę dla stałego dostawcy zdarzeń przed rozpoczęciem długiego kodowania. Jednak nie ma żadnych ograniczeń, jeśli chodzi o pisanie do konsumenta fizycznego jako pierwszego.

     

  3. Utwórz nową klasę konsumenta opisującąużytkownika fizycznego.

    Podobnie jak w przypadku każdej klasy, klasa konsumenta opisuje ogólne parametry stałego konsumenta zdarzeń do usługi WMI.

  4. Utwórz wystąpienie klasy odbiorcy.

    Podobnie jak w przypadku każdej innej klasy WMI, aby zaimplementować tę klasę, należy utworzyć wystąpienie klasy konsumenta. Instancja klasy konsumenta jest również nazywana logicznym konsumentem. Odbiorca logiczny reprezentuje konsumenta fizycznego w WMI.

  5. Utwórz filtr zdarzeń.

    Zapytania o zdarzenia, które aktywują stałych odbiorców zdarzeń, są nazywane filtrami zdarzeń . Jeden filtr zdarzeń może być skojarzony z wieloma logicznymi odbiornikami zdarzeń. Ponadto wiele filtrów zdarzeń może być skojarzonych z pojedynczym odbiorcą zdarzeń logicznych. Filtr jest wystąpieniem __EventFilter.

    Zdarzenie dziennika NT jest generowane, gdy zapytanie użytkownika zdarzenia trwałego kończy się niepowodzeniem. Źródłem zdarzenia jest WinMgmt, identyfikator zdarzenia to 10, a typ zdarzenia to Błąd.

  6. Połącz filtr zdarzeń z logicznym odbiorcą.

    Łącząc filtr zdarzeń z odbiorcą logicznym, instruujesz usługę WMI o tym, który filtr zdarzeń należy do którego odbiorcy logicznego. Odbiorcy zdarzeń logicznych i filtry zdarzeń są połączone wystąpieniem klasy skojarzenia __FilterToConsumerBinding. Po odebraniu zdarzenia, które odpowiada zapytaniu dotyczącym zdarzeń opisanym w filtrze zdarzeń, usługa WMI znajduje związanego logicznego konsumenta zdarzenia, przeszukując instancję klasy powiązania. Po zlokalizowaniu wystąpienia odbiorcy zdarzenia logicznego usługa WMI używa wystąpienia klasy __EventConsumerProviderRegistration do lokalizowania i uruchamiania użytkownika zdarzenia fizycznego skojarzonego z tym wystąpieniem.

  7. pisanie dostawcy konsumentów zdarzeń.

    Dostawca odbiorców zdarzeń jest obiektem COM, który lokalizuje fizycznego konsumenta dla usługi WMI.