MI_PARTITION_PAGE_LISTS

The MI_PARTITION_PAGE_LISTS structure is here thought to exist only as the PageLists member of an MI_PARTITION.

Variability

As a collection of what had mostly been internal variables, the MI_PARTITION_PAGE_LISTS is highly susceptible to changing between builds. The following changes of size give some rough indication:

Version Size (x86) Size (x64)
10.0 0x06C0 0x0CC0
1511 0x0780 0x0D00
1607 0x0780 0x0B40
1703 to 1709 0x07C0 0x0BC0
1803 0x0880 0x0FC0

Layout

The sizes in the preceding table and the 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
MMPFNLIST *FreePagesByColor [2];
10.0 and higher  
0x08 (10.0 to 1607) 0x10 (10.0 to 1607)
SLIST_HEADER *FreePageSlist [2];
10.0 to 1607 next at 0x04D4 and 0x07E8
0x40 0x40
MMPFNLIST ZeroedPageListHead;
10.0 and higher  
0x80 0x80
MMPFNLIST FreePageListHead;
10.0 and higher  
0xC0 0xC0
MMPFNLIST StandbyPageListHead;
10.0 and higher  
0x0100 0x0100
MMPFNLIST StandbyPageListByPriority [8];
10.0 and higher  
0x01C0 0x0240
MMPFNLIST ModifiedPageListNoReservation;
10.0 and higher  
0x0200 0x0280
MMPFNLIST ModifiedPageListByReservation [0x10];
10.0 and higher  
0x0340 0x0500
MMFPNLIST MappedPageListHead [0x10];
10.0 and higher  
0x0480 0x0780
MMPFNLIST BadPageListHead;
10.0 and higher  
0x04C0 0x07C0
MMPFNLIST EnclavePageListHead;
1511 and higher  
0x04D4 0x07E8
SLIST_HEADER *FreePageSlist [2];
1703 and higher previously at 0x08 and 0x10
0x0494 (10.0);
0x04D4 (1511 to 1607);
0x04DC
0x07A8 (10.0);
0x07E8 (1511 to 1607);
0x07F8
MMPFNLIST *PageLocationList [8];
10.0 and higher  
0x04B4 (10.0);
0x04F4 (1511 to 1607);
0x04FC
0x07E8 (10.0);
0x0828 (1511 to 1607);
0x0838
ULONG volatile StandbyRepurposedByPriority [8];
10.0 and higher  
0x0540 0x0880
ULONG_PTR volatile TransitionSharedPages;
1703 and higher  
0x0544 0x0888
ULONG_PTR TransitionSharedPagesPeak [3];
1703 to 1709  
ULONG_PTR TransitionSharedPagesPeak [6];
1803 and higher  
0x4D4 (10.0);
0x0514 (1511 to 1607);
0x0550 (1703 to 1709);
0x055C
0x0808 (10.0);
0x0848 (1511 to 1607);
0x08A0 (1703 to 1709);
0x08B8
KEVENT MappedPageListHeadEvent [0x10];
10.0 and higher  
0x05D4 (10.0);
0x0614 (1511 to 1607);
0x0650 (1703 to 1709);
0065C
0x0988 (10.0);
0x09C8 (1511 to 1607);
0x0A20 (1703 to 1709);
0x0A38
MI_DECAY_TIMER_LINK DecayClusterTimerHeads [4];
10.0 and higher  
0x05E4 (10.0);
0x0624 (1511 to 1607);
0x0660 (1703 to 1709);
0x066C
0x09A8 (10.0);
0x09E8 (1511 to 1607);
0x0A40 (1703 to 1709);
0x0A58
ULONG DecayHand;
10.0 and higher  
0x0664 (1703 to 1709);
0x0670
0x0A44 (1703 to 1709);
0x0A5C
BOOLEAN StandbyListDiscard;
1703 and higher previously as ULONG at 0x0704 and 0x0AC8
0x0665 (1703 to 1709);
0x0671
0x0A45 (1703 to 1709);
0x0A5D
BOOLEAN FreeListDiscard;
1703 and higher previously at 0x0708 and 0x0ACC
0x0666 (1703 to 1709);
0x0672
0x0A46 (1703 to 1709);
0x0A5E
BOOLEAN LargePfnBitMapsReady;
1703 and higher previously at 0x0710 and 0x0AD8
0x05E8 (10.0);
0x0628 (1511 to 1607);
0x0668 (1703 to 1709);
0x0678
0x09B0 (10.0);
0x09F0 (1511 to 1607);
0x0A48 (1703 to 1709);
0x0A60
ULONGLONG LastDecayHandUpdateTime;
   
0x05F0 (10.0);
0x0630 (1511 to 1607);
0x0670 (1703 to 1709);
0x0680
0x09B8 (10.0);
0x09F8 (1511 to 1607);
0x0A50 (1703 to 1709);
0x0A68
MI_LDW_WORK_CONTEXT LastChangeLdwContext;
   
0x0640 (10.0);
0x0680 (1511 to 1607);
0x06C0
0x0A00 (10.0);
0x0A40 (1511 to 1607);
0x0AC0
ULONG_PTR AvailableEventsLock;
   
0x0644 (10.0);
0x0684 (1511 to 1607);
0x06C4
0x0A08 (10.0);
0x0A48 (1511 to 1607);
0x0AC8
MI_AVAILABLE_PAGE_WAIT_STATES AvailablePageWaitStates [2];
   
0x0700 0x0B28
PVOID MirrorListLocks;
1703 and higher previously at 0x070C and 0x0AD0
0x066C (10.0);
0x06C0 (1511 to 1607)
0x0A48 (10.0);
0x0AA8
ULONG_PTR LowMemoryThreshold;
10.0 to 1607 next at 0x074C and 0x0B68
0x0670 (10.0);
0x06C4 (1511 to 1607)
0x0A50 (10.0);
0x0AB0
ULONG_PTR HighMemoryThreshold;
10.0 to 1607 next at 0x0750 and 0x0B6C
0x0680 (10.0);
0x0700 (1511 to 1607);
0x0740
0x0A80 (10.0);
0x0AC0 (1511 to 1607);
0x0B40
ULONG_PTR volatile TransitionPrivatePages;
   
0x0704 (1511 to 1607) 0x0AC8 (1511 to 1607)
ULONG StandbyListDiscard;
1511 to 1607 next as BOOLEAN at 0x0664 and 0x0A44
0x0708 (1511 to 1607) 0x0ACC (1511 to 1607)
BOOLEAN FreeListDiscard;
1511 to 1607 next at 0x0665 and 0x0A45
0x0684 (10.0);
0x0709 (1511)
0x0A88 (10.0);
0x0ACD (1511)
BOOLEAN RebuildLargePagesInitialized;
10.0 to 1511  
0x0688 (10.0);
0x070C (1511)
0x0A90 (10.0);
0x0AD0 (1511)
MI_REBUILD_LARGE_PAGES RebuildLargePagesItem;
10.0 to 1511  
0x0740 (1511);
0x070C (1607)
0x0CF8 (1511);
0x0AD0
PVOID MirrorListLocks;
1511 to 1607 next at 0x0700 and 0x0B28
0x0710 (1607) 0x0AD8 (1607)
BOOLEAN LargePfnBitMapsReady;
1607 only next at 0x0666 and 0x0A46
0x0714 (1607);
0x0744
0x0AE0 (1607);
0x0B48
RTL_BITMAP LargePfnBitMap [1];
1607 and higher (x86)  
RTL_BITMAP LargePfnBitMap [2];
1607 and higher (x64)  
0x074C 0x0B68
MI_FREE_LARGE_PAGE_LIST *LargePageListHeads;
1803 and higher  
0x0750 0x0B70
MI_LARGE_PAGE_CANDIDATES LargePageCandidate [1];
1803 and higher  
0x0858 0x0F80
WORK_QUEUE_ITEM RebuildLargePageWorkItem;
1803 and higher  
0x0868 0x0FA0
BOOLEAN RebuildLargePageActive;
1803 and higher  
0x086C 0x0FA4
LONG volatile LargePageRebuildLock;
1803 and higher  
0x074C (1703 to 1709);
0x0870
0x0B68 (1703 to 1709);
0x0FA8
ULONG_PTR LowMemoryThreshold;
1703 and higher previously at 0x06C0 and 0x0A48
0x0750 (1703 to 1709);
0x0874
0x0B70 (1703 to 1709);
0x0FAC
ULONG_PTR HighMemoryThreshold;
1703 and higher previously at 0x06C4 and 0x0A50
0x0740 (1607);
0x0780 (1703 to 1709)
0x0B00 (1607);
0x0B80 (1703 to 1709)
ULONG LargePfnBitMapLock;
1607 to 1709