Поделиться через


Архитектура SENS

Служба уведомлений о системных событиях работает с системой событий COM+. SENS является издателем событий для классов событий, которые он отслеживает: сеть, вход в систему, а также события питания или батареи. Приложение, получающее уведомление, называется подписчиком событий.

Когда приложение подписывается на получение уведомлений, оно также может указать фильтры, связанные с подписанными событиями. События SENS и COM+ используют фильтры для дальнейшего определения того, когда приложение должно получать уведомления.

Уведомления являются асинхронными, поэтому приложение, получающее уведомление, не обязательно должно быть активным при отправке уведомления. Когда приложение подписывается на получение уведомлений, оно может указать, следует ли активировать его при возникновении события или уведомить позже о его активности.

Подписка может быть временной и допустимой только до остановки работы приложения или постоянной и допустимой, пока приложение не будет удалено из системы.

Хранилище данных событий COM+ содержит сведения об издателе событий (SENS), подписчиках событий и фильтрах. SENS также предопределяет исходящий интерфейс для каждого класса событий в библиотеке типов.

Класс событий GUID Интерфейс
Сетевые события SENSGUID_EVENTCLASS_NETWORK ISensNetwork
События входа SENSGUID_EVENTCLASS_LOGON ISensLogon
События питания SENSGUID_EVENTCLASS_ONNOW ISensOnNow

 

Чтобы получать уведомления о любом из этих событий, приложению необходимо выполнить два действия:

  • Подпишитесь на интересующие вас события SENS. Чтобы подписаться на событие, используйте интерфейсы IEventSubscription и IEventSystem в событиях COM+. Необходимо указать идентификатор для классов событий и идентификатор издателя SENS, SENSGUID_PUBLISHER. Подписки предоставляются на уровне событий, поэтому приложение, подписывающееся, также должно указать, какие события в классе представляют интерес. Каждое событие соответствует методу в интерфейсе, соответствующему его классу событий.
  • Создайте объект приемника с реализацией для каждого обрабатываемого интерфейса. Дополнительные сведения об этих интерфейсах и событиях, поддерживаемых в каждом из них, см. в разделах ISensNetwork, ISensLogon и ISensOnNow .

При возникновении одного из отслеживаемых событий SENS обрабатывает каждую подписку с любыми связанными фильтрами и уведомляет подписчиков через систему событий COM+.