서비스에서 이벤트 수신

콘솔 애플리케이션인 서비스는 사용자가 로그오프할 때 알림을 수신하도록 콘솔 제어 처리기를 등록할 수 있습니다. 그러나 대화형 사용자가 로그온할 때 전송되는 콘솔 이벤트는 없습니다. 사용자가 로그온할 때 알림을 받는 방법에 대한 자세한 내용은 Winlogon 알림 패키지 만들기를 참조하세요.

시스템은 디바이스 변경 이벤트를 모든 서비스로 브로드캐스트합니다. 이러한 이벤트는 창 프로시저 또는 해당 서비스 제어 처리기에서 서비스에서 수신할 수 있습니다. 서비스에서 수신해야 하는 이벤트를 지정하려면 RegisterDeviceNotification 함수를 사용합니다.

플러그 앤 플레이 디바이스 이벤트를 최대한 빨리 처리해야 합니다. 그렇지 않으면 시스템이 응답하지 않을 수 있습니다. 이벤트 처리기가 실행을 차단할 수 있는 작업(예: I/O)을 수행하는 경우 다른 스레드를 시작하여 작업을 비동기적으로 수행하는 것이 가장 좋습니다.

서비스에서 RegisterDeviceNotification을 호출하면 서비스는 창 핸들 또는 서비스 상태 핸들도 지정합니다. 서비스에서 창 핸들을 지정하면 창 프로시저가 알림 이벤트를 받습니다. 서비스에서 서비스 상태 핸들을 지정하면 해당 서비스 제어 처리기가 알림 이벤트를 받습니다. 자세한 내용은 HandlerEx를 참조하세요.

RegisterDeviceNotification에서 반환된 디바이스 알림 핸들은 더 이상 필요하지 않은 경우 UnregisterDeviceNotification 함수를 호출하여 닫아야 합니다.