mensaje de WM_QUERYENDSESSION

El mensaje WM_QUERYENDSESSION se envía cuando el usuario elige finalizar la sesión o cuando una aplicación llama a una de las funciones de apagado del sistema. Si alguna aplicación devuelve cero, la sesión no finaliza. El sistema deja de enviar mensajes WM_QUERYENDSESSION en cuanto una aplicación devuelve cero.

Después de procesar este mensaje, el sistema envía el mensaje WM_ENDSESSION con el parámetro wParam establecido en los resultados del mensaje WM_QUERYENDSESSION .

Una ventana recibe este mensaje a través de la función WindowProc.

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

Parámetros

hwnd

Un identificador de la ventana.

uMsg

Identificador de WM_QUERYENDSESSION .

wParam

Este parámetro se reserva para uso futuro.

lParam

Este parámetro puede ser uno o más de los siguientes valores. Si este parámetro es 0, el sistema se apaga o reinicia (no es posible determinar qué evento se está produciendo).

Value Significado
ENDSESSION_CLOSEAPP
0x00000001
La aplicación usa un archivo que se debe reemplazar, se está agotando el sistema o se agotan los recursos del sistema. Para obtener más información, vea Directrices para aplicaciones.
ENDSESSION_CRITICAL
0x40000000
La aplicación se ve obligada a apagarse.
ENDSESSION_LOGOFF
0x80000000
El usuario inicia sesión. Para obtener más información, vea Cerrar sesión.

 

Tenga en cuenta que este parámetro es una máscara de bits. Para probar este valor, use una operación bit a bit; no pruebe la igualdad.

Valor devuelto

Las aplicaciones deben respetar las intenciones del usuario y devolver TRUE. De forma predeterminada, la función DefWindowProc devuelve TRUE para este mensaje.

Si el apagado dañaría el sistema o el medio que se está quemando, la aplicación puede devolver FALSE. Sin embargo, se recomienda respetar las acciones del usuario.

Observaciones

Cuando una aplicación devuelve TRUE para este mensaje, recibe el mensaje WM_ENDSESSION , independientemente de cómo responden las demás aplicaciones al mensaje WM_QUERYENDSESSION . Cada aplicación debe devolver TRUE o FALSE inmediatamente después de recibir este mensaje y aplazar las operaciones de limpieza hasta que reciba el mensaje WM_ENDSESSION .

Las aplicaciones pueden mostrar una interfaz de usuario que solicite al usuario información durante el apagado, pero no se recomienda. Después de cinco segundos, el sistema muestra información sobre las aplicaciones que impiden el apagado y permite al usuario finalizarlas. Por ejemplo, Windows XP muestra un cuadro de diálogo, mientras que Windows Vista muestra una pantalla completa con información adicional sobre el bloqueo del apagado de las aplicaciones. Si la aplicación debe bloquear o posponer el apagado del sistema, use la función ShutdownBlockReasonCreate . Para obtener más información, vea Cambios de apagado para Windows Vista.

Las aplicaciones de consola pueden usar la función SetConsoleCtrlHandler para recibir una notificación de apagado.

Las aplicaciones de servicio pueden usar la función RegisterServiceCtrlHandlerEx para recibir notificaciones de apagado en una rutina de controlador.

Ejemplos

Para obtener un ejemplo, vea Cerrar sesión.

Requisitos

Requisito Value
Cliente mínimo compatible
Windows XP [aplicaciones de escritorio | Aplicaciones para UWP]
Servidor mínimo compatible
Windows Server 2003 [aplicaciones de escritorio | Aplicaciones para UWP]
Encabezado
WinUser.h (incluye Windows.h)

Consulte también

Cerrar sesión

Cerrando

DefWindowProc

ExitWindows

SetProcessShutdownParameters

WM_ENDSESSION