Lo que te puedo decir en estos momentos es que los mensajes WM_QUERYENDSESSION y WM_ENDSESSION no los mandan las aplicaciones, los manda el sistema a las aplicaciones cuando se va a cerrar la sesión de Windows. Para cerrar la sesión de Windows desde tu aplicación necesitas algo como lo que expone Zarco Gajic
aquí.
LineComment Saludos