A version of this page is also available for

Windows Embedded CE 6.0 R3


This function tries to free up memory for an application. If necessary, the shell closes down other applications by sending WM_CLOSE messages.


BOOL SHCloseApps(
  DWORD dwMemSought


  • dwMemSought
    [in] Specifies, in bytes, the amount of memory to be freed.

Return Value

This function returns TRUE if it is successful and FALSE if it fails.


If a large memory allocation fails in your application, call SHCloseApps and attempt to allocate memory again.

OEM Support Requirements

This function call is handled by OEM code added to the shell's public source code. This is where an OEM either uses the default implementation or modifies it for a specific device.

The Windows Mobile Standard shell sends WM_CLOSE messages if there is less than 128 KB of free memory. The shell does not send WM_CLOSE messages if you ask for more memory than is available. For example, Windows Mobile Standard does not allocate 200 KB of memory if it only has 190 KB free. Instead, the shell displays an Out Of Memory dialog box to the user. There are two ways to deal with the problem. First, allocate memory in small amounts, such as 16 KB so that your application does not run the risk of asking for more memory than is available. Alternatively, call SHCloseApps, which sends WM_CLOSE messages until there is enough memory for the allocation. However, SHCloseApps does not allocate memory to your application; it only frees memory. If a large memory allocation fails in your application, call SHCloseApps. Then, attempt to allocate memory again.


Header aygshell.h
Library aygshell.lib
Windows Embedded CE Windows CE 3.0 and later
Windows Mobile Pocket PC 2000 and later, Smartphone 2002 and later

See Also