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