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