MI_PARTITION_COMMIT

The MI_PARTITION_COMMIT structure (formally _MI_PARTITION_COMMIT) is here thought to exist only as a subdivision of the MI_PARTITION, specifically as the latter’s Commit member.

Variability

Though the MI_PARTITION_COMMIT structure is an implementation detail and can be expected to change between builds, it has not changed nearly as much as might be thought from taking its changes of size as a rough measure:

Version Size (x86) Size (x64)
10.0 0x20 0x38
1511 to 1903 0x80 0x80
2004 0x24 0x40

What’s hidden here is that the only change thus far to the structure is for one new member. It was cache-aligned when added for Version 1511 and then a slight redefinition (removal of volatile) for Version 2004 removed the cache-alignment.

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
ULONG_PTR PeakCommitment;
10.0 and higher
0x04 0x08
ULONG_PTR TotalCommitLimitMaximum;
10.0 and higher
0x08 0x10  
LONG volatile Popups [2];
10.0 and higher
0x10 0x18
ULONG_PTR LowCommitThreshold;
10.0 and higher
0x14 0x20
ULONG_PTR HighCommitThreshold;
10.0 and higher
0x18 0x28
KSPIN_LOCK EventLock;
10.0 and higher
0x1C 0x30
ULONG_PTR SystemCommitReserve;
10.0 and higher
0x40 (1511 to 1903);
0x20
0x40 (1511 to 1903);
0x38
ULONG_PTR volatile OverCommit;
1511 to 1903
ULONG_PTR OverCommit;
2004 and higher