WM_QUERYENDSESSION Nachricht

Die WM_QUERYENDSESSION Nachricht wird gesendet, wenn der Benutzer die Sitzung beenden möchte oder wenn eine Anwendung eine der Funktionen zum Herunterfahren des Systems aufruft. Wenn eine Anwendung null zurückgibt, wird die Sitzung nicht beendet. Das System beendet das Senden WM_QUERYENDSESSION Nachrichten, sobald eine Anwendung null zurückgibt.

Nach der Verarbeitung dieser Nachricht sendet das System die WM_ENDSESSION Nachricht, wobei der wParam-Parameter auf die Ergebnisse der WM_QUERYENDSESSION Nachricht festgelegt ist.

Ein Fenster empfängt diese Meldung über seine WindowProc-Funktion .

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

Parameter

hwnd

Ein Handle für das Fenster.

uMsg

Der WM_QUERYENDSESSION-Bezeichner .

wParam

Dieser Parameter ist für die zukünftige Verwendung reserviert.

lParam

Dieser Parameter kann einen oder mehrere der folgenden Werte aufweisen. Wenn dieser Parameter 0 ist, wird das System heruntergefahren oder neu gestartet (es ist nicht möglich, zu bestimmen, welches Ereignis eintritt).

Wert Bedeutung
ENDSESSION_CLOSEAPP
0x00000001
Die Anwendung verwendet eine Datei, die ersetzt werden muss, oder das System wird gewartet, oder die Systemressourcen sind erschöpft. Weitere Informationen finden Sie unter Richtlinien für Anwendungen.
ENDSESSION_CRITICAL
0x40000000
Die Anwendung muss heruntergefahren werden.
ENDSESSION_LOGOFF
0x80000000
Der Benutzer wird abgemeldet. Weitere Informationen finden Sie unter Abmelden.

 

Beachten Sie, dass es sich bei diesem Parameter um eine Bitmaske handelt. Verwenden Sie einen bitweisen Vorgang, um diesen Wert zu testen. nicht auf Gleichheit testen.

Rückgabewert

Anwendungen sollten die Absichten des Benutzers berücksichtigen und TRUE zurückgeben. Standardmäßig gibt die DefWindowProc-Funktiontrue für diese Nachricht zurück.

Wenn das herunterfahren das gebrannte System oder Medium beschädigt würde, kann die Anwendung FALSE zurückgeben. Es empfiehlt sich jedoch, die Aktionen des Benutzers zu respektieren.

Bemerkungen

Wenn eine Anwendung true für diese Nachricht zurückgibt, empfängt sie die WM_ENDSESSION Nachricht, unabhängig davon, wie die anderen Anwendungen auf die WM_QUERYENDSESSION Nachricht reagieren. Jede Anwendung sollte sofort nach Empfang dieser Nachricht TRUE oder FALSE zurückgeben und alle Bereinigungsvorgänge zurückstellen, bis sie die WM_ENDSESSION Nachricht empfängt.

Anwendungen können eine Benutzeroberfläche anzeigen, die den Benutzer beim Herunterfahren zur Eingabe von Informationen auffordert. Dies wird jedoch nicht empfohlen. Nach fünf Sekunden zeigt das System Informationen zu den Anwendungen an, die das Herunterfahren verhindern, und ermöglicht es dem Benutzer, sie zu beenden. Windows XP zeigt beispielsweise ein Dialogfeld an, während Windows Vista einen Vollbildmodus mit zusätzlichen Informationen zu den Anwendungen anzeigt, die das Herunterfahren blockieren. Wenn Ihre Anwendung das Herunterfahren des Systems blockieren oder verschieben muss, verwenden Sie die Funktion ShutdownBlockReasonCreate . Weitere Informationen finden Sie unter Herunterfahren von Änderungen für Windows Vista.

Konsolenanwendungen können die SetConsoleCtrlHandler-Funktion verwenden, um eine Benachrichtigung zum Herunterfahren zu erhalten.

Dienstanwendungen können die Funktion RegisterServiceCtrlHandlerEx verwenden, um Benachrichtigungen zum Herunterfahren in einer Handlerroutine zu empfangen.

Beispiele

Ein Beispiel finden Sie unter Abmelden.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client)
Windows XP [Desktop-Apps | UWP-Apps]
Unterstützte Mindestversion (Server)
Windows Server 2003 [Desktop-Apps | UWP-Apps]
Header
WinUser.h (windows.h einschließen)

Siehe auch

Abmelden

Herunterfahren

DefWindowProc

ExitWindows

SetProcessShutdownParameters

WM_ENDSESSION