_MI_SLAB_ALLOCATOR_CONTEXT

//0xe8 bytes (sizeof) struct _MI_SLAB_ALLOCATOR_CONTEXT { struct _RTL_RB_TREE SlabTree; //0x0 volatile LONG Lock; //0x10 struct _MI_PARTITION* Partition; //0x18 struct { union { struct { struct _MI_SLAB_ALLOCATOR_ENTRY* AllocationHint; //0x20 struct _MI_SLAB_ALLOCATOR_ENTRY* FreeHint; //0x28 } NonIdentity; //0x20 struct { struct _MI_SLAB_ALLOCATOR_ENTRY** AllocationHints; //0x20 struct _MI_SLAB_ALLOCATOR_ENTRY** FreeHints; //0x28 } Identity; //0x20 }; struct _MI_SLAB_ALLOCATOR_ENTRY* DefragSourceEntry; //0x30 struct _MI_SLAB_ALLOCATOR_ENTRY* DefragTargetEntry; //0x38 } Hints; //0x20 VOID* StandbyPageCache; //0x40 VOID* StandbyPageList; //0x48 struct _MMPFNLIST* RepurposedStandbyPageList; //0x50 struct _LIST_ENTRY* SlabListsByIdentity; //0x58 ULONGLONG FreePageCount; //0x60 ULONGLONG AvailablePagesGoal; //0x68 ULONGLONG ChargedPageCount; //0x70 ULONGLONG SlabEntryCount; //0x78 enum _MI_SLAB_ALLOCATOR_TYPE Type; //0x80 struct _MI_NODE_NUMBER_ZERO_BASED NumaNodeIndex; //0x84 union { ULONG EntryBecameEmpty:1; //0x88 ULONG DemoteInProgress:1; //0x88 ULONG PreferZeroedPages:1; //0x88 ULONG ZeroOnFree:1; //0x88 ULONG LargePageIndex:2; //0x88 ULONG Spare:26; //0x88 ULONG AllFlags; //0x88 } Flags; //0x88 volatile LONG ReEvaluateAllocationHint; //0x8c ULONG SlabEntriesAllocated; //0x90 ULONG SlabEntriesDemoted; //0x94 ULONG SlabEntriesFailedFast; //0x98 ULONG SlabEntriesFailedSlow; //0x9c ULONG SlabPagesFreedNonZeroed; //0xa0 ULONG SlabPagesCrossIdentity; //0xa4 ULONGLONG LastReplenishTime; //0xa8 ULONGLONG LastFailureTime; //0xb0 struct _WORK_QUEUE_ITEM ReplenishWorkItem; //0xb8 struct _LIST_ENTRY ReplenishWaitList; //0xd8 };