1
votes

While logging off in Windows XP the system is sending the message with code 0x3B to the main window of the application. It was received together with 0x11 WM_QUERYENDSESSION message. Here is the log of incoming messages for WndProc:

Message processing: Id = 0x3B, wParam = -2147483637, lParam = 0, result = 0
Message processing: Id = 0x11, wParam = 0, lParam = -2147483648, result = 0
Form closing event handler. Reason:WindowsShutDown
Message processed: Id = 0x11, wParam = 0, lParam = -2147483648, result = 1
Message processed: Id = 0x3B, wParam = -2147483637, lParam = 0, result = 1
Message processing: Id = 0x3B, wParam = -2147483639, lParam = 0, result = 0
Message processing: Id = 0x16, wParam = 1, lParam = -2147483648, result = 0
Form closed event handler. Reason:WindowsShutDown
Message processing: Id = 0x46, wParam = 0, lParam = 1239312, result = 0
Message processed: Id = 0x46, wParam = 0, lParam = 1239312, result = 0
Message processing: Id = 0x47, wParam = 0, lParam = 1239312, result = 0
Message processed: Id = 0x47, wParam = 0, lParam = 1239312, result = 0
Message processing: Id = 0x86, wParam = 0, lParam = 0, result = 0
Message processing: Id = 0x7F, wParam = 2, lParam = 0, result = 0
Message processed: Id = 0x7F, wParam = 2, lParam = 0, result = 852077
Message processing: Id = 0x7F, wParam = 2, lParam = 0, result = 0
Message processed: Id = 0x7F, wParam = 2, lParam = 0, result = 852077
Message processed: Id = 0x86, wParam = 0, lParam = 0, result = 1
Message processing: Id = 0x6, wParam = 0, lParam = 0, result = 0
Message processed: Id = 0x6, wParam = 0, lParam = 0, result = 0
Message processing: Id = 0x1C, wParam = 0, lParam = 2620, result = 0
Message processed: Id = 0x1C, wParam = 0, lParam = 2620, result = 0
Message processing: Id = 0x8, wParam = 0, lParam = 0, result = 0
Message processed: Id = 0x8, wParam = 0, lParam = 0, result = 0
Message processing: Id = 0x2, wParam = 0, lParam = 0, result = 0
Message processed: Id = 0x2, wParam = 0, lParam = 0, result = 0
Message processing: Id = 0x82, wParam = 0, lParam = 0, result = 0
Message processed: Id = 0x82, wParam = 0, lParam = 0, result = 0

My application has a bug in Windows XP during logging off. It doesn't close. And the reason is:

Message processed: Id = 0x3B, wParam = -2147483637, lParam = 0, result = <b>3</b>

instead of 1

Any ideas what does this message mean? And why is it processed incorrectly?

1
Show us the message processing code? especially for the close one? - Dani
@Scott: this question is very related to programming, even if it could be better asked (for example, some sample code would be helpful). - James Johnston
It is WM_INITENDSESSION, otherwise undocumented. Be sure it gets passed to DefWindowProc() or you'll indeed have shutdown problems. - Hans Passant
My application doesn't override this message processing by default. It also doesn't have any other child forms except of the main one. - maxibrain

1 Answers

4
votes

My Google-fu reveals this to be an undocumented message - WM_CLIENTSHUTDOWN. This may be of interest, but all it does is send WM_QUERYENDSESSION / WM_ENDSESSION to the window and its children. The return value of 3 (MCSR_DONOTSHUTDOWN) indicates that the window, or one of its children, is vetoing the request.