Compartir a través de


Recepción de eventos en un servicio

Un servicio que es una aplicación de consola puede registrar un controlador de control de consola para recibir notificaciones cuando un usuario cierra sesión. Sin embargo, no se envía ningún evento de consola cuando un usuario interactivo inicia sesión. Para obtener información sobre cómo recibir notificaciones cuando un usuario inicia sesión, vea Crear un paquete de notificación de Winlogon.

El sistema difunde eventos de cambio de dispositivo a todos los servicios. Un servicio puede recibir estos eventos en un procedimiento de ventana o en su controlador de control de servicio. Para especificar qué eventos debe recibir el servicio, use la función RegisterDeviceNotification .

Asegúrese de controlar Plug and Play eventos de dispositivo lo antes posible. De lo contrario, el sistema puede dejar de responder. Si el controlador de eventos es realizar una operación que puede bloquear la ejecución (por ejemplo, E/S), es mejor iniciar otro subproceso para realizar la operación de forma asincrónica.

Cuando un servicio llama a RegisterDeviceNotification, el servicio también especifica un identificador de ventana o un identificador de estado del servicio. Si un servicio especifica un identificador de ventana, el procedimiento de ventana recibe los eventos de notificación. Si un servicio especifica su identificador de estado de servicio, su controlador de control de servicio recibe los eventos de notificación. Para obtener más información, vea HandlerEx.

Los identificadores de notificación de dispositivo devueltos por RegisterDeviceNotification deben cerrarse llamando a la función UnregisterDeviceNotification cuando ya no se necesiten.