Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
После создания потребителя логического события и фильтра событий необходимо связать их, который регистрирует логического потребителя для получения уведомлений о событиях, указанных фильтром.
В следующей процедуре описывается привязка фильтра событий к логическому потребителю.
Привязать фильтр событий с логическим потребителем
Создайте экземпляр системного класса __FilterToConsumerBinding в репозитории WMI.
Класс __FilterToConsumerBinding — это класс ассоциации, который связывает экземпляр фильтра событий и логический экземпляр потребителя через свойства ссылок фильтра и потребителя. Для получения дополнительной информации см. "Объявление класса ассоциации".
Задайте свойству Filter экземпляр фильтра.
Задайте свойству consumer экземпляр логического потребителя.
Задайте свойство DeliverSynchronous, чтобы определить нужный тип доставки.
Свойство DeliverSynchronous определяет, когда 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.
Связанные разделы