Udostępnij za pośrednictwem


Wiązanie filtru zdarzeń z konsumentem logicznym

Po utworzeniu odbiorcy zdarzeń logicznych i filtru zdarzeń należy je połączyć, który rejestruje konsumenta logicznego w celu odbierania powiadomień o zdarzeniach określonych przez filtr.

Poniższa procedura opisuje sposób powiązania filtru zdarzeń z użytkownikiem logicznym.

Aby powiązać filtr zdarzeń z odbiorcą logicznym

  1. Utwórz wystąpienie klasy systemu __FilterToConsumerBinding w repozytorium WMI.

    Klasa __FilterToConsumerBinding jest klasą skojarzenia, która łączy wystąpienie filtru zdarzeń i wystąpienie odbiorcy logicznego za pośrednictwem właściwości referencyjnych Filter i Consumer. Aby uzyskać więcej informacji, zapoznaj się z Deklarowaniem klasy skojarzenia.

  2. Ustaw właściwość Filter na instancję filtra.

  3. Ustaw właściwość Consumer na wystąpienie użytkownika logicznego.

  4. Ustaw właściwość DeliverSynchronously, aby określić żądany typ dostawy.

    Właściwość DeliverSynchronously określa, kiedy usługa WMI dostarcza powiadomienia o zdarzeniach synchronicznie lub asynchronicznie. Ustawienie tej właściwości na wartość true żąda synchronicznego dostarczania. Użyj dostarczania synchronicznego tylko wtedy, gdy trwały konsument może przetwarzać zdarzenia w ciągu około 100 mikrosekund.

    Notatka

    Ponieważ wywołanie zwrotne do ujścia może nie być zwracane na tym samym poziomie uwierzytelniania, jakiego wymaga klient, zaleca się stosowanie komunikacji semisynchronicznej zamiast komunikacji asynchronicznej. Więcej informacji znajdziesz w Wywoływanie metody.

     

  5. Podczas wyrejestrowania odbiorcy zdarzeń logicznych upewnij się, że usuwasz wystąpienie __FilterToConsumerBinding.

    Każde wystąpienie __FilterToConsumerBinding reprezentuje rejestrację dla określonego powiadomienia o zdarzeniu. Po usunięciu powiązania usługa WMI dezaktywuje rejestrację. W zależności od implementacji może być konieczne usunięcie wystąpień konsumenta logicznego i filtru zdarzeń w celu dezaktywowania rejestracji.

W poniższym przykładzie kodu przedstawiono instancję __FilterToConsumerBinding, która łączy instancję klasy ActiveScriptEventConsumer z określonym filtrem zdarzeń (instancja odbiorcy zdarzeń została utworzona w temacie Tworzenie odbiorcy logicznego, a filtr zdarzeń został utworzony w temacie Tworzenie filtru zdarzeń).

instance of __FilterToConsumerBinding
{
    Filter = $FILTER;
    Consumer = $CONSUMER;
    DeliverSynchronously=FALSE;

    // this is the Administrators SID in array of bytes format
    CreatorSID = {1,2,0,0,0,0,0,5,32,0,0,0,32,2,0,0}; 
};

Dwóch użytkowników, ActiveScriptEventConsumer i CommandLineEventConsumer, nie będzie działać, chyba że ich twórca jest członkiem lokalnej grupy Administratorzy.

: Gdy administrator tworzy subskrypcję, jego identyfikator SID nie jest używany dla właściwości CreatorSID, ale zamiast tego jest używany identyfikator SID lokalnej grupy Administratorzy. W związku z tym różni administratorzy mogą tworzyć wystąpienia, a subskrypcja nadal będzie działać. Aby uzyskać więcej informacji, zobacz Bezpieczne odbieranie zdarzeń.

Gdy filtr jest powiązany z użytkownikiem logicznym, zdarzenie jest rejestrowane przez Śledzenie zdarzeń w systemie Windows (ETW). Aby uzyskać więcej informacji, zobacz Śledzenie działania usługi WMI.

Nieprzerwane odbieranie zdarzeń