This documentation is archived and is not being maintained.

How to: Get Device Memory

To get the available memory for a device, use platform invoke to call the native GlobalMemoryStatus and GetSystemMemoryDivision functions.

This code example defines the following:

  • Platform invoke declarations for the native methods in Windows Embedded CE.

  • A structure to pass to and receive from the native methods.

  • A managed method named ShowMemory, which displays the available memory.

public struct MEMORYSTATUS
    public UInt32 dwLength;
    public UInt32 dwMemoryLoad;
    public UInt32 dwTotalPhys;
    public UInt32 dwAvailPhys;
    public UInt32 dwTotalPageFile;
    public UInt32 dwAvailPageFile;
    public UInt32 dwTotalVirtual;
    public UInt32 dwAvailVirtual;

public static extern void GlobalMemoryStatus
    ref MEMORYSTATUS lpBuffer

public static extern int GetSystemMemoryDivision
    ref UInt32 lpdwStorePages,
    ref UInt32 lpdwRamPages,
    ref UInt32 lpdwPageSize

public void ShowMemory()
    UInt32 storePages = 0;
    UInt32 ramPages = 0;
    UInt32 pageSize = 0;
    int res = GetSystemMemoryDivision(ref storePages, 
        ref ramPages, ref pageSize);

    // Call the native GlobalMemoryStatus method 
    // with the defined structure.
    GlobalMemoryStatus(ref memStatus);

    // Use a StringBuilder for the message box string.
    StringBuilder MemoryInfo = new StringBuilder();
    MemoryInfo.Append("Memory Load: " 
        + memStatus.dwMemoryLoad.ToString() + "\n");
    MemoryInfo.Append("Total Physical: " 
        + memStatus.dwTotalPhys.ToString() + "\n");
    MemoryInfo.Append("Avail Physical: " 
        + memStatus.dwAvailPhys.ToString() + "\n");
    MemoryInfo.Append("Total Page File: " 
        + memStatus.dwTotalPageFile.ToString() + "\n");
    MemoryInfo.Append("Avail Page File: " 
        + memStatus.dwAvailPageFile.ToString() + "\n");
    MemoryInfo.Append("Total Virtual: " 
        + memStatus.dwTotalVirtual.ToString() + "\n");
    MemoryInfo.Append("Avail Virtual: " 
        + memStatus.dwAvailVirtual.ToString() + "\n");

    // Show the available memory.


This example requires references to the following namespaces: