Geoff Chappell - Software Analyst
The MI_PAGE_COMBINING_SUPPORT structure (formally _MI_PAGE_COMBINING_SUPPORT) is here thought to exist only as the PageCombining member of the MI_PARTITION.
The MI_PAGE_COMBINING_SUPPORT structure is an implementation detail and can be expected to change between builds. That said, it has been surprisingly stable, with just the one change of size so far, and only then from a small insertion near the end:
Version | Size (x86) | Size (x64) |
---|---|---|
10.0 to 1809 | 0xD8 | 0x0188 |
1903 to 2004 | 0xE0 | 0x0190 |
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 |
---|---|---|
0x00 | 0x00 |
MI_PARTITION *Partition; |
0x04 | 0x08 |
LIST_ENTRY ArbitraryPfnMapList; |
0x0C | 0x18 |
MI_COMBINE_WORKITEM FreeCombinePoolItem; |
0x20 | 0x40 |
ULONG CombiningThreadCount; |
0x24 | 0x48 |
LIST_ENTRY CombinePageFreeList; |
0x2C | 0x58 |
ULONG_PTR CombineFreeListLock; |
0x30 | 0x60 |
MI_COMBINE_PAGE_LISTHEAD CombinePageListHeads [0x10]; |
0xB0 | 0x0160 |
ULONGLONG CommonPageCombineDomain; |
0xB0 (10.0 to 1809); 0xB8 |
0x0160 (10.0 to 1809); 0x0168 |
MI_PAGE_COMBINE_STATISTICS PageCombineStats; |