WM_QUERYENDSESSION 메시지

WM_QUERYENDSESSION 메시지는 사용자가 세션을 종료하도록 선택하거나 애플리케이션이 시스템 종료 함수 중 하나를 호출할 때 전송됩니다. 애플리케이션이 0을 반환하는 경우 세션이 종료되지 않습니다. 시스템은 하나의 애플리케이션이 0을 반환하는 즉시 WM_QUERYENDSESSION 메시지 전송을 중지합니다.

이 메시지를 처리한 후 시스템은 wParam 매개 변수가 설정된 WM_ENDSESSION 메시지를 WM_QUERYENDSESSION 메시지의 결과로 보냅니다.

창은 WindowProc 함수를 통해 이 메시지를 받습니다.

LRESULT CALLBACK WindowProc( 
  HWND hwnd,      // handle to window 
  UINT uMsg,      // message identifier 
  WPARAM wParam,  // not used 
  LPARAM lParam   // logoff option
);

매개 변수

hwnd

창에 대한 핸들입니다.

uMsg

WM_QUERYENDSESSION 식별자입니다.

wParam

이 매개 변수는 나중에 사용하도록 예약되어 있습니다.

lParam

이 매개 변수는 다음 값 중 하나 이상일 수 있습니다. 이 매개 변수가 0이면 시스템이 종료되거나 다시 시작됩니다(어떤 이벤트가 발생하는지 확인할 수 없음).

의미
ENDSESSION_CLOSEAPP
0x00000001
애플리케이션이 교체해야 하는 파일을 사용 중이거나, 시스템이 서비스 중이거나, 시스템 리소스가 소진되었습니다. 자세한 내용은 애플리케이션에 대한 지침을 참조하세요.
ENDSESSION_CRITICAL
0x40000000
애플리케이션은 강제로 종료됩니다.
ENDSESSION_LOGOFF
0x80000000
사용자가 로그오프하고 있습니다. 자세한 내용은 로그오프를 참조하세요.

 

이 매개 변수는 비트 마스크입니다. 이 값을 테스트하려면 비트 단위 연산을 사용합니다. 는 같음을 테스트하지 않습니다.

반환 값

애플리케이션은 사용자의 의도를 존중하고 TRUE를 반환해야 합니다. 기본적으로 DefWindowProc 함수는 이 메시지에 대해 TRUE 를 반환합니다.

종료하면 구울 시스템 또는 미디어가 손상되면 애플리케이션에서 FALSE를 반환할 수 있습니다. 그러나 사용자의 작업을 존중하는 것이 좋습니다.

설명

애플리케이션이 이 메시지에 대해 TRUE 를 반환하면 다른 애플리케이션이 WM_QUERYENDSESSION 메시지에 응답하는 방식에 관계없이 WM_ENDSESSION 메시지를 받습니다. 각 애플리케이션은 이 메시지를 받은 즉시 TRUE 또는 FALSE 를 반환하고 WM_ENDSESSION 메시지를 받을 때까지 정리 작업을 연기해야 합니다.

애플리케이션은 종료 시 사용자에게 정보를 요청하는 사용자 인터페이스를 표시할 수 있지만 권장되지는 않습니다. 5초 후에 시스템은 종료를 방지하는 애플리케이션에 대한 정보를 표시하고 사용자가 종료할 수 있도록 합니다. 예를 들어 Windows XP는 대화 상자를 표시하고 Windows Vista는 종료를 차단하는 애플리케이션에 대한 추가 정보가 포함된 전체 화면을 표시합니다. 애플리케이션이 시스템 종료를 차단하거나 연기해야 하는 경우 ShutdownBlockReasonCreate 함수를 사용합니다. 자세한 내용은 Windows Vista에 대한 종료 변경 내용을 참조하세요.

콘솔 애플리케이션은 SetConsoleCtrlHandler 함수를 사용하여 종료 알림을 받을 수 있습니다.

서비스 애플리케이션은 RegisterServiceCtrlHandlerEx 함수를 사용하여 처리기 루틴에서 종료 알림을 받을 수 있습니다.

예제

예제는 로깅 끄기 를 참조하세요.

요구 사항

요구 사항
지원되는 최소 클라이언트
Windows XP [데스크톱 앱 | UWP 앱]
지원되는 최소 서버
Windows Server 2003 [데스크톱 앱 | UWP 앱]
헤더
WinUser.h(Windows.h 포함)

추가 정보

로깅 끄기

종료

DefWindowProc

ExitWindows

SetProcessShutdownParameters

WM_ENDSESSION