WM_QUERYENDSESSION message

Le message WM_QUERYENDSESSION est envoyé lorsque l’utilisateur choisit de mettre fin à la session ou lorsqu’une application appelle l’une des fonctions d’arrêt du système. Si une application retourne zéro, la session n’est pas terminée. Le système cesse d’envoyer des messages WM_QUERYENDSESSION dès qu’une application retourne zéro.

Après avoir traité ce message, le système envoie le message WM_ENDSESSION avec le paramètre wParam défini sur les résultats du message WM_QUERYENDSESSION .

Une fenêtre reçoit ce message via sa fonction WindowProc.

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

Paramètres

Hwnd

Handle de la fenêtre.

uMsg

Identificateur WM_QUERYENDSESSION .

wParam

Ce paramètre est réservé à un usage futur.

lParam

Ce paramètre peut prendre une ou plusieurs des valeurs suivantes. Si ce paramètre a la valeur 0, le système s’arrête ou redémarre (il n’est pas possible de déterminer l’événement qui se produit).

Valeur Signification
ENDSESSION_CLOSEAPP
0x00000001
L’application utilise un fichier qui doit être remplacé, le système est en cours de maintenance ou les ressources système sont épuisées. Pour plus d’informations, consultez Recommandations pour les applications.
ENDSESSION_CRITICAL
0x40000000
L’application est forcée de s’arrêter.
ENDSESSION_LOGOFF
0x80000000
L’utilisateur se déconnecte. Pour plus d’informations, consultez Déconnexion.

 

Notez que ce paramètre est un masque de bits. Pour tester cette valeur, utilisez une opération de bits ; ne testent pas l’égalité.

Valeur retournée

Les applications doivent respecter les intentions de l’utilisateur et retourner TRUE. Par défaut, la fonction DefWindowProc retourne TRUE pour ce message.

Si l’arrêt endommage le système ou le média en cours de gravure, l’application peut retourner FALSE. Toutefois, il est recommandé de respecter les actions de l’utilisateur.

Remarques

Lorsqu’une application retourne TRUE pour ce message, elle reçoit le message WM_ENDSESSION , quelle que soit la façon dont les autres applications répondent au message WM_QUERYENDSESSION . Chaque application doit retourner TRUE ou FALSE immédiatement après la réception de ce message, et différer toutes les opérations de nettoyage jusqu’à ce qu’elle reçoive le message WM_ENDSESSION .

Les applications peuvent afficher une interface utilisateur invitant l’utilisateur à fournir des informations au moment de l’arrêt, mais cela n’est pas recommandé. Après cinq secondes, le système affiche des informations sur les applications qui empêchent l’arrêt et permettent à l’utilisateur de les arrêter. Par exemple, Windows XP affiche une boîte de dialogue, tandis que Windows Vista affiche un plein écran avec des informations supplémentaires sur les applications qui bloquent l’arrêt. Si votre application doit bloquer ou reporter l’arrêt du système, utilisez la fonction ShutdownBlockReasonCreate . Pour plus d’informations, consultez Changements d’arrêt pour Windows Vista.

Les applications console peuvent utiliser la fonction SetConsoleCtrlHandler pour recevoir une notification d’arrêt.

Les applications de service peuvent utiliser la fonction RegisterServiceCtrlHandlerEx pour recevoir des notifications d’arrêt dans une routine de gestionnaire.

Exemples

Pour obtenir un exemple, consultez Déconnexion.

Configuration requise

Condition requise Valeur
Client minimal pris en charge
Windows XP [applications de bureau | Applications UWP]
Serveur minimal pris en charge
Windows Server 2003 [applications de bureau | Applications UWP]
En-tête
WinUser.h (inclure Windows.h)

Voir aussi

Déconnexion

Fermeture

DefWindowProc

ExitWindows

SetProcessShutdownParameters

WM_ENDSESSION