Describes the current usage of memory accessible to the title.
typedef struct _TITLEMEMORYSTATUS {
DWORD dwLength;
DWORD dwReserved;
DWORDLONG ullTotalMem;
DWORDLONG ullAvailMem;
DWORDLONG ullLegacyUsed;
DWORDLONG ullLegacyPeak;
DWORDLONG ullLegacyAvail;
DWORDLONG ullTitleUsed;
DWORDLONG ullTitleAvail;
DWORDLONG ullLegacyPageTableUsed;
DWORDLONG ullTitlePageTableUsed;
} TITLEMEMORYSTATUS, *PTITLEMEMORYSTATUS, *LPTITLEMEMORYSTATUS;
dwLength
Set this value to sizeof(TITLEMEMORYSTATUS) before calling TitleMemoryStatus.
dwReserved
Reserved. Do not use.
ullTotalMem
Total memory available to the current title, in bytes.
ullAvailMem
Free memory currently available to the title, in bytes.
ullLegacyUsed
Total memory currently allocated in the legacy working set, in bytes.
ullLegacyPeak
Peak amount of memory allocated within the legacy working set, in bytes. This number is reset when the partition is restarted.
ullLegacyAvail
The amount of memory currently available within the legacy working set, in bytes. This is the difference between the amount currently allocated within the legacy working set and the maximum available limit of the legacy working set.
ullTitleUsed
The amount of memory currently allocated within the title working set, in bytes. This is the sum of all memory allocated with MEM_TITLE or MEM_GRAPHICS, plus all memory required by CPU page tables to access the allocated memory.
ullTitleAvail
The amount of free memory currently available within the title working set, in bytes. This is determined by the total amount of title-accessible memory, the current allocation within the title working set, and the minimum guaranteed size of the legacy working set according to this formula:Total memory - legacy minimum - current title working set.
ullLegacyPageTableUsed
The amount of memory currently allocated for CPU page tables in the legacy working set, in bytes.
ullTitlePageTableUsed
The amount of memory currently allocated for CPU page tables in the title working set, in bytes.
The TitleMemoryStatus function returns a structure of type TITLEMEMORYSTATUS that describes how much memory has been allocated in the Title OS and how much is still available. TitleMemoryStatus can help you get a picture of how the 5GB address space available to the Title OS is being used.
The fields in TITLEMEMORYSTATUS categorize memory as either “Title” or “Legacy”. ”Title” memory is memory that has been allocated using the XMemAlloc function. “Legacy” memory is memory that has been allocated through other means, such as by calls to VirtualAlloc. Several components of the platform still use legacy allocation APIs. These components include COM, WinRT, the CRT and several operating system components.
It’s difficult to identify the source of legacy allocations because such allocations aren’t visible to the tracking mechanism that XMemAlloc provides. Over time, more of the system components that use legacy allocations will be updated to use XMemAlloc so they can be more easily tracked.
Even though the system makes 5GB available to the ERA, the amount of memory available to a running title is less than that because some memory is reserved for various system components (192MB). The ulTotalMem field of TITLEMEMORYSTATUS is the difference between the full 5GB and the amount reserved for the system.
The amount of memory reported by ulTotalMem is available for either “Title” or “Legacy” allocations. The number of bytes currently taken by legacy allocations is reported by the ulLegacyUsed member of TITLEMEMORYSTATUS. The amount of Title memory already allocated is reported in the ulTitleUsed field.
Because both legacy and Title allocations come out of the same address space, allocations of one type make less memory available to allocations of the other type as well. The difference between ulTotalMem and the sums of ulTitleUsed and ulLegacyUsed is the amount of memory still available. This amount is represented by ulAvailMem.

Note The diagram above shows Total ERA Memory as 5120MB (5GB) and Title-Accessible Memory as 4928MB. The exact values of Total ERA Memory and Title-Accessible Memory depend on the hardware type configuration settings, such as Console Mode and the Extra Title Memory settings.
Note The diagram above shows allocated legacy memory grouped together in one part of the address space and allocated title memory grouped together in another. The different types of allocations are separated in the diagram only to illustrate what the fields in TITLEMEMORYSTATUS mean. It’s not meant to imply that the system groups the allocations in this way.
TITLEMEMORYSTATUS has two additional fields: ulLegacyAvail and ulTitleAvail. These values are the difference between ulTotalMem and the amount of legacy or title memory already used, respectively. As you can see in the diagram above, ulLegacyAvail and ulTitleAvail cannot be used independently to determine how much of each type of memory remains available. The actual amount of memory still available is ulTotalMem – (ulLegacyUsed + ulTitleUsed).
Header: Declared in xmem.h.