I'm not sure exactly what it is you want to know. The working RAM of a CE device is divided into 'program' and 'object store' areas. The division is adjusted on demand on all Windows CE devices; Pocket PC has a background thread that adjusts when the device is idle. The 'object store' is your semi-permanent storage mechanism. It contains the registry, the in-memory file system (typically, but not necessarily, the root file system) and the property databases used by some applications (e.g. Contacts, Inbox, Tasks, Calendar on the Pocket PC). The contents of the object store are lost when the device power runs out or the device is fully reset. Check the device manual for how to do this. The system ROM is also part of the file system, but it's aliased. The parts that are binaries are in Execute-In-Place format, i.e. the system functions run directly from ROM. Some OEMs shadow this area in RAM, which isn't then available to the system as RAM. You can never delete something from ROM, but you can copy a file to RAM with the same name which will be used instead. The object store is transactional, but only with respect to file system structures and registry data. If the device is reset before a write completes, you may lose some of your data, but the file system will still be readable. Finally, the object store is compressed, using one of two algorithms. They're both Lempel-Ziv compression (similar to the ZIP file format), however, one treats all the bytes in sequence, whereas the other compresses the odd and even bytes separately. For a Unicode UTF-16 file, this can often reduce the even byte stream to a simple run of zeros. Files opened with the FILE_FLAG_RANDOM_ACCESS flag are allegedly not compressed. Any storage cards are currently formatted with the FAT file system - non-transactional, but write-through rather than write-back cached. Storage cards cannot be accessed as working program memory. Windows CE is a demand-paged operating system: it will only load pages of executable images as they are required. Read-only pages can be discarded and reloaded; writeable pages cannot be discarded once they're written. CE is quite aggressive at removing pages that haven't been used recently. Finding out how much physical memory is available is a bit tricky. I think you need to use GetSystemMemoryDivision to find out how many physical pages are allocated to working program memory and how many to the object store. Adding the two together gives the memory size.