MI_PAGE_COMBINING_SUPPORT

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.

Variability

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

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
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;