본문 바로가기

My Study/Programming&Theory

WM_QUERYENDSESSION Message

 해당 메시지는 지금 켜져있는 세션을 닫을 때 발생하는 메시지입니다.
즉, 지금 세션을 닫는 경우는 3가지가 있습니다.

1. 컴퓨터 종료
2. 컴퓨터 재부팅
3. 로그오프

3가지 경우에 모두 발생하게 됩니다.

간단한 테스트를 위해 샘플 코드를 작성해보았습니다.
WinMain은 뭐 별반 다를게 없으니 콜백 함수로 등록시켜 놓은 WndProc함수부분만 보겠습니다.
너무 간단하군요. :-) 샘플 코드는 간결할수록 샘플 코드의 위력이 강해지니까요...

WM_QUERYENDSESSION 메시지가 발생하면 메시지 박스를 하나 띄우고 FALSE를 리턴해 줍니다.
저 때 리턴 값이 무엇이냐에 따라서 상황이 달랍니다.
리턴 값이 FALSE이면 세션 닫는 일을 멈춥니다.
반면 리턴 값이 TRUE이면 해당 프로그램을 종료시키고 세션을 닫죠.

한번 VMware에서 테스트 해본 결과를 영상으로 찍어보았습니다.
( 프로그램이 맛탱이가 갔나;; =_= 막 한글이 깨지네요.. 다른걸로 바꿔서 써야겠어요 ㅠㅠ )
(영상 크게 보시려면 Ctrl 누르고.. 마우스 휠로 브라우져 %를 조정하셔서 보세요;;! )

결론은 세션을 닫을 때 혹시 저장해야하는 값이 있다거나 할 때 모르고 저장하지 않고 세션을 닫아버릴 수 있으니..
이 메시지를 사용해 세션을 닫을 때도 저장하는 코드를 넣어두면 훨씬 프로그램이 좋아질 것 같습니다.

감사합니다~


'My Study > Programming&Theory' 카테고리의 다른 글

전역적 필터 드라이버  (0) 2011.01.12
Inline Hooking  (2) 2011.01.10
동적으로 Interrupt Vector값 얻기 ( APIC 설명.. )  (0) 2010.12.26
IDT Hooking 시 주의해야 할 점  (0) 2010.12.25
Named Pipe 간단한 예제  (4) 2010.12.24