Привязка фильтра событий к логическому потребителю
После создания логического потребителя событий и фильтра событий необходимо связать их, чтобы зарегистрировать логический потребитель для получения уведомлений о событиях, указанных фильтром.
В следующей процедуре описывается привязка фильтра событий к логическому потребителю.
Привязка фильтра событий к логическому потребителю
Создайте экземпляр системного класса __FilterToConsumerBinding в репозитории WMI.
Класс __FilterToConsumerBinding — это класс ассоциации, который связывает экземпляр фильтра событий и экземпляр логического потребителя вместе с помощью ссылочных свойств Filter и Consumer . Дополнительные сведения см. в разделе Объявление класса ассоциации.
Присвойте свойству Filter значение экземпляра фильтра.
Присвойте свойству Consumer значение экземпляра логического потребителя.
Задайте свойство DeliverSynchronously , чтобы определить нужный тип доставки.
Свойство DeliverSynchronously определяет, когда WMI доставляет уведомления о событиях синхронно или асинхронно. Установка для этого свойства значения TRUE запрашивает синхронную доставку. Используйте синхронную доставку, только если постоянный потребитель может обрабатывать события в пределах примерно 100 микросекунд.
Примечание
Так как обратный вызов в приемник может быть возвращен не на том же уровне проверки подлинности, который требуется клиенту, рекомендуется использовать полусинхронный режим вместо асинхронного взаимодействия. Дополнительные сведения см. в разделе Вызов метода .
При отмене регистрации потребителя логического события обязательно удалите экземпляр __FilterToConsumerBinding .
Каждый экземпляр __FilterToConsumerBinding представляет собой регистрацию для определенного уведомления о событии. При удалении привязки WMI отключает регистрацию. В зависимости от реализации может потребоваться удалить экземпляры логического потребителя и фильтра событий, чтобы отключить регистрацию.
В следующем примере кода показан экземпляр __FilterToConsumerBinding , который связывает экземпляр класса ActiveScriptEventConsumer с определенным фильтром событий (экземпляр объекта-получателя события был создан в разделе Создание логического потребителя , а фильтр событий — в разделе Создание фильтра событий ).
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};
};
Два потребителя, ActiveScriptEventConsumer и CommandLineEventConsumer, не будут работать, если их создатель не является членом локальной группы администраторов.
: Когда администратор создает подписку, его идентификатор безопасности не используется для свойства CreatorSID , но вместо него используется идентификатор безопасности локальной группы администраторов. Таким образом, экземпляры могут создаваться разными администраторами, и подписка по-прежнему будет работать. Дополнительные сведения см. в разделе Безопасное получение событий.
Когда фильтр привязан к логическому потребителю, событие записывается с помощью трассировки событий Windows (ETW). Дополнительные сведения см. в разделе Трассировка действия WMI.
Связанные темы