Создание поставщика событий
Поставщик событий — это COM-объект, предоставляющий WMI с уведомлениями о встроенных и внешних событиях. Встроенное событие сообщает об изменении внутренних данных в WMI, а событие extrinsic сообщает о определяемом пользователем событии, не описанном встроенным событием. Например, событие в ответ на изменения, создание или удаление класса Win32_LogicalDisk будет классифицироваться как встроенное событие. Событие, созданное на основе чего-либо, отличного от изменения, создания или удаления существующего объекта WMI, является событием экстринсов. Независимо от поддерживаемого класса, вы можете реализовать все поставщики событий одинаково.
В следующей процедуре описывается реализация поставщика событий.
Реализация поставщика событий
Проектирование и регистрация поставщика классов с помощью инструментария WMI.
Поставщики классов регистрируются с помощью WMI путем создания экземпляра __Win32Provider и класса __EventProviderRegistration . Дополнительные сведения см. в разделе Регистрация поставщика событий.
Реализуйте интерфейс IWbemProviderInit для поставщика.
Интерфейс IWbemProviderInit — это общий интерфейс, используемый WMI для загрузки и инициализации всех поставщиков. Дополнительные сведения см. в разделе Инициализация поставщика.
Реализуйте IWbemEventProvider в качестве основного интерфейса для поставщика.
Интерфейс IWbemEventProvider использует метод ProviderEvents для предоставления событий в WMI. Дополнительные сведения см. в разделе Реализация основного интерфейса для поставщика событий.
Примечание
Поставщики событий должны использовать модель многопоточности "Оба".
При необходимости можно также реализовать интерфейс IWbemEventProviderQuerySink , чтобы повысить производительность поставщика событий.
Интерфейс IWbemEventProviderQuerySink позволяет поставщику оптимизировать запросы перед отправкой ответа на WMI и наиболее полезен для поставщика, который предоставляет события нескольких типов и должен выполнять как можно больше внутренних оптимизаций. Дополнительные сведения см. в разделе Оптимизация поставщика событий.
Реализуйте интерфейс IWbemEventProviderSecurity , чтобы ограничить потребителей определенными идентификаторами безопасности (SID) или реализовать IWbemEventSink::SetSinkSecurity для защиты самого приемника. Поставщик также может задать свойство SECURITY_DESCRIPTOR в классе событий для защиты отдельных событий в MOF-коде. Дополнительные сведения см. в разделе Защита событий WMI.
Добавьте дополнительный код, необходимый для поставщика.
При проектировании поставщика, скорее всего, потребуется вызвать интерфейсы WMI. Дополнительные сведения см. в разделе Вызов метода .
При получении сведений для клиента может потребоваться доступ к уровням безопасности для этого клиента. Дополнительные сведения см. в разделе Олицетворение клиента.
Замените существующий поставщик новым кодом.
Если у вас нет поставщика для копирования, этот шаг выполнять не нужно. Дополнительные сведения см. в разделе Обновление поставщика.
Клиентское приложение может запросить событие, зарегистрировав себя в WMI в качестве потребителя события. Дополнительные сведения см. в разделе Получение события WMI.