Geoff Chappell - Software Analyst
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 |