Share via


ExitWindowsEx

4/8/2010

This function shuts down the system.

Syntax

BOOL ExitWindowsEx(
   UINT uFlags,
   DWORD dwReserved
);

Parameters

  • uFlags
    [in] Specifies the type of shutdown, with options for immediate or deferred reboot, or a prompted reboot. This parameter can be one or a combination of the following values:

    Value Description

    EWX_POWEROFF

    Shuts down the system and turns off the power.

    This flag is not supported on Windows Mobile Professional or Windows Mobile Classic.

    EWX_REBOOT

    Shuts down the system and reboots the device.

    EWX_DEFER

    EWX_DEFER must be bitwise ORed with EWX_REBOOT and/or EWX_PROMPT. If EWX_DEFER is passed alone, ExitWindowsEx fails.

    Specifying EWX_DEFER ORed with EWX_REBOOT defers the reboot to a later time when no reboot deferral sessions are active. (A reboot deferral session is an internal system state during which reboots are not allowed.) If no reboot deferral sessions are active when you call ExitWindowsEx, a reboot is initiated immediately and completed asynchronously. Using this flag modifier allows callers not to worry about whether it is safe to call this function at any point in their code execution.

    Specifying EWX_DEFER bitwise ORed with EWX_PROMPT and EWX_REBOOT defers the reboot to a later time when no reboot deferral sessions are active, and prompts the user when it is time to initiate a reboot.

    EWX_PROMPT

    EWX_PROMPT must be bitwise ORed with EWX_REBOOT. EWX_PROMPT can also be bitwise ORed with EWX_DEFER; see EWX_DEFER for a description of the behavior. If EWX_PROMPT is passed alone, ExitWindowsEx fails.

    Specifying EWX_PROMPT with EWX_REBOOT causes the system to prompt the user for permission to reboot. The user can choose to reboot either immediately or later. This function initiates a reboot only if the user agrees to an immediate reboot. If the user chooses to reboot later, the notification reappears after a pre-set amount of time, and continues to reappear at regular intervals until the user chooses to reboot. The use of EWX_PROMPT helps applications satisfy the e-call requirement by transferring control of system reboots to the user.

  • dwReserved
    [in] Reserved; this parameter is ignored.

Return Value

If the function succeeds, the return value is nonzero. If the function fails, the return value is zero.

Remarks

This function returns as soon as it has initiated the reboot/shutdown, and the reboot/shutdown then proceeds asynchronously. Because the function executes asynchronously, a nonzero return value indicates that the shutdown has been initiated. A nonzero return value does not, however, guarantee that the shutdown will succeed, because the system, the user, or another application can abort the shutdown.

If the function fails, you can obtain extended error information by calling GetLastError.

The flags EWX_DEFER and EWX_PROMPT allow applications to observe reboot deferral sessions (defer) or require user permission for rebooting (by prompting the user). A reboot deferral session is an internal system state during which reboots are not allowed. If an application calls ExitWindowsEx without passing EWX_DEFER while a reboot deferral session is active, it could produce unpredictable results.

EWX_PROMPT and EWX_DEFER are only valid when ORed with EWX_REBOOT. They have no effect when bitwise ORed with EWX_POWEROFF or when used without the reboot or shutdown flags.

Examples

ExitWindowsEx(EWX_REBOOT | EWX_DEFER, 0);

This call causes the reboot to be deferred to a later time, based on currently active reboot deferral sessions.

ExitWindowsEx(EWX_REBOOT | EWX_PROMPT, 0);

This call causes the system to prompt the user with a notification requesting permission to reboot. If the user agrees, a reboot is initiated immediately, regardless of whether a deferral session is currently active or not. If the user chooses to reboot later, the notification keeps reappearing after a pre-set amount of time, until the user chooses to reboot.

ExitWindowsEx(EWX_REBOOT | EWX_DEFER | EWX_PROMPT, 0);

This call causes the reboot to be deferred to a later time, based on currently active reboot deferral sessions. Then, when it is time to initiate a reboot, the system prompts the user with a notification requesting permission to reboot.

Requirements

Header aygshell.h
Windows Mobile Pocket PC for Windows Mobile Version 5.0 and later, Smartphone for Windows Mobile Version 5.0 and later

See Also

Reference

Shell Functions