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


Получение событий в службе

Служба, которая является консольным приложением, может зарегистрировать обработчик консоли управления для получения уведомлений при выходе пользователя из системы. Однако при входе интерактивного пользователя событие консоли не отправляется. Сведения о получении уведомлений при входе пользователя см. в статье Создание пакета уведомлений Winlogon.

Система транслирует события изменения устройства во все службы. Эти события могут быть получены службой в процедуре окна или в обработчике управления службой. Чтобы указать, какие события должна получать служба, используйте функцию RegisterDeviceNotification .

Не забудьте как можно быстрее обрабатывать события Plug and Play устройства. В противном случае система может перестать отвечать на запросы. Если обработчик событий выполняет операцию, которая может блокировать выполнение (например, операции ввода-вывода), рекомендуется запустить другой поток для асинхронного выполнения операции.

Когда служба вызывает RegisterDeviceNotification, служба также указывает дескриптор окна или дескриптор состояния службы. Если служба указывает дескриптор окна, процедура окна получает события уведомления. Если служба указывает дескриптор состояния службы, обработчик управления службой получает события уведомлений. Дополнительные сведения см. в разделе HandlerEx.

Дескриптора уведомлений устройства, возвращаемые RegisterDeviceNotification , должны быть закрыты путем вызова функции UnregisterDeviceNotification , если они больше не нужны.