MI_PARTITION

As a feature of the Memory Manager, a memory partition is represented by the MI_PARTITION structure (formally _MI_PARTITION). Exposed through the Object Manager, a partition object is a pointer to an MI_PARTITION.

Memory partitions are new for Windows 10. They are in effect specific to 64-bit Windows, since 32-bit Windows has just the one system partition. Each partition is in some sense a separate instance of what earlier versions treat as the whole management of physical memory. Among the side-effects is that most of the relevant internal variables which used to show plainly when debugging with public symbols now show less plainly because they are members of members of an MI_PARTITION structure, which anyway may be found only through members of members of the MI_SYSTEM_INFORMATION structure which is the type of the internal variable named MiState.

Variability

The MI_PARTITION structure is unsurprisingly treated as if it is no less internal than when many of its members were internal variables. It is highly susceptible to changing between builds. Its changes of size give some rough indication:

Version Size (x86) Size (x64)
10.0 0x1740 0x25C0
1511 0x18C0 0x2700
1607 0x1A00 0x2780
1703 0x1A00 0x27C0
1709 0x1A80 0x2880
1803 0x1B80 0x2CC0
1809 0x1C40 0x2DC0
1903 0x1DC0 0x30C0
2004 0x1B40 0x2D00

It happens, however, that all change from one build to the next is in the many substructures, not in the direct members, until an insertion for Version 1903.

Layout

The sizes in the preceding table and the offsets, names and types in the next are from type information in public symbol files for the kernel.

Offset (x86) Offset (x64) Definition Versions
0x00 0x00
MI_PARTITION_CORE Core;
10.0 and higher
0xE8 (10.0);
0xB8 (1511);
0xC0 (1607);
0xF8 (1703);
0xE8
0x0168 (10.0);
0x0158 (1511);
0x0160 (1607);
0x01C8 (1703);
0x01A8 (1709 to 1809);
0x01B0 (1903);
0x01B8
MI_PARTITION_MODWRITES Modwriter;
10.0 and higher
0x0298 (10.0);
0x0288 (1511);
0x0290 (1607);
0x02C8 (1703);
0x02B0 (1709);
0x02B8
0x0410 (10.0);
0x0430 (1511 to 1607);
0x04A0 (1703);
0x0470 (1709 to 1903);
0x0480
MI_PARTITION_STORES Store;
10.0 and higher
0x02E8 (10.0);
0x0300 (1511 to 1607);
0x0340
0x0490 (10.0);
0x04C0 (1511 to 1607);
0x0540 (1703);
0x0500 (1709 to 1903);
0x0540
MI_PARTITION_SEGMENTS Segments;
10.0 and higher
0x03C0 (10.0);
0x0400 (1511 to 1607);
0x0440 (1703);
0x04C0 (1709);
0x0540
0x05C0 (10.0);
0x0640 (1511 to 1607);
0x0780 (1703);
0x0800 (1709);
0x0840 (1803 to 1903);
0x0880
MI_PARTITION_PAGE_LISTS PageLists;
10.0 and higher
0x0A80 (10.0);
0x0B80 (1511 to 1607);
0x0C00 (1703);
0x0C80 (1709);
0x0DC0 (1803);
0x0E80 (1809);
0x1000 (1903);
0x0D80
0x1280 (10.0);
0x1340 (1511);
0x1180 (1607);
0x1340 (1703);
0x13C0 (1709);
0x1800 (1803);
0x1900 (1809);
0x1C00 (1903);
0x1840
MI_PARTITION_COMMIT Commit;
10.0 and higher
0x0AA0 (10.0);
0x0C00 (1511 to 1607);
0x0C80 (1703);
0x0D00 (1709);
0x0E40 (1803);
0x0F00 (1809);
0x1080 (1903);
0x0DA4
0x12B8 (10.0);
0x13C0 (1511);
0x1200 (1607);
0x013C0 (1703);
0x1440 (1709);
0x1880 (1803);
0x1980 (1809);
0x1C80 (1903);
0x1880
MI_PARTITION_ZEROING Zeroing;
10.0 and higher
0x0AD0 (10.0);
0x0C40 (1511 to 1607);
0x0CC0 (1703);
0x0D40 (1709);
0x0E80 (1803);
0x0F40 (1809);
0x10C0 (1903);
0x0E18
0x1300 (10.0);
0x1428 (1511);
0x1260 (1607);
0x1420 (1703);
0x14A8 (1709);
0x18E8 (1803);
0x19E8 (1809);
0x1CE8 (1903);
0x1930
MI_PAGE_COMBINING_SUPPORT PageCombine;
10.0 and higher
0x0BA8 (10.0);
0x0D18 (1511 to 1607);
0x0D98 (1703);
0x0E18 (1709);
0x0F58 (1803);
0x1018 (1809);
0x11A0 (1903);
0x0EF8
0x1488 (10.0);
0x15B0 (1511);
0x13E8 (1607);
0x15A8 (1703);
0x1630 (1709);
0x1A70 (1803);
0x1B70 (1809);
0x1E78 (1903);
0x1AC0
PVOID WorkingSetControl;
10.0 and higher
0x0BAC (10.0);
0x0D1C (1511 to 1607);
0x0D9C (1703);
0x0E1C (1709);
0x0F5C (1803);
0x101C (1809);
0x11A4 (1903);
0x0EFC
0x1490 (10.0);
0x15B8 (1511);
0x13F0 (1607);
0x15B0 (1703);
0x1638 (1709);
0x1A78 (1803);
0x1B78 (1809);
0x1E80 (1903);
0x1AC8
MM_WORKING_SET_EXPANSION_HEAD WorkingSetExpansionHead;
10.0 and higher
0x11AC (1903);
0x0F04
0x1E90 (1903);
0x1AD8
ULONG SessionDetachTimeStamp;
1903 and higher
0x0BC0 (10.0);
0x0D40 (1511 to 1607);
0x0DC0 (1703);
0x0E40 (1709);
0x0F80 (1803);
0x1040 (1809);
0x11C0 (1903);
0x0F40
0x14C0 (10.0);
0x1600 (1511);
0x1400 (1607);
0x15C0 (1703);
0x1680 (1709);
0x1AC0 (1803);
0x1BC0 (1809);
0x1EC0 (1903);
0x1B00
MI_VISIBLE_PARTITION Vp;
10.0 and higher