MEMORY_PARTITION_INITIAL_ADD_INFORMATION

The MEMORY_PARTITION_INITIAL_ADD_INFORMATION structure (formally _MEMORY_PARTITION_INITIAL_ADD_INFORMATION) both provides input for and receives output from NtManagePartition when given the information class SystemMemoryPartitionInitialAddMemory (4).

The structure is defined for both 32-bit and 64-bit Windows, but the 32-bit form is useless in practice before Version 1703 because the 32-bit NtManagePartition fails trivially (returning STATUS_NOT_SUPPORTED).

Version Size (x86) Size (x64)
10.0 to 1511 0x0C 0x18
1607 to 2004 0x14 0x20

The sizes in the preceding table and the offsets, names and types in the next are from type information in private symbol files that Microsoft has included in downloadable packages of public symbol files and still makes available at the public symbol server.

Offset (x86) Offset (x64) Definition Versions Remarks
0x00 (10.0 to 1511) 0x00 (10.0 to 1511)
ULONG_PTR StartPage;
10.0 to 1511 input
0x04 (10.o to 1511) 0x08 (10.0 to 1511)
ULONG_PTR NumberOfPages;
10.0 to 1511 input and output
0x08 (10.0 to 1511);
0x00
0x10 (10.0 to 1511);
0x00
ULONG Flags;
10.0 and higher input
0x04 0x04
ULONG NumberOfRanges;
1607 and higher input
0x08 0x08
ULONG_PTR NumberOfPagesAdded;
1607 and higher output
0x0C 0x10
MEMORY_PARTITION_PAGE_RANGE PartitionRanges [ANYSIZE_ARRAY];
1607 and higher input