struct _MI_SLAB_ALLOCATOR_CONTEXT { struct _RTL_RB_TREE SlabTree;/* 0x0 16 */ volatile long Lock;/* 0x10 4 */ /* 4 bytes padding */ struct _MI_PARTITION* Partition;/* 0x18 8 */ struct { union { struct { struct _MI_SLAB_ALLOCATOR_ENTRY* AllocationHint;/* 0x20 8 */ struct _MI_SLAB_ALLOCATOR_ENTRY* FreeHint;/* 0x28 8 */ } NonIdentity;/* 0x20 16 */ struct { struct _MI_SLAB_ALLOCATOR_ENTRY** AllocationHints;/* 0x20 8 */ struct _MI_SLAB_ALLOCATOR_ENTRY** FreeHints;/* 0x28 8 */ } Identity;/* 0x20 16 */ };/* 0x20 16 */ struct _MI_SLAB_ALLOCATOR_ENTRY* DefragSourceEntry;/* 0x30 8 */ struct _MI_SLAB_ALLOCATOR_ENTRY* DefragTargetEntry;/* 0x38 8 */ } Hints;/* 0x20 32 */ /* ── cacheline 1 boundary (64 bytes) ── */ void* StandbyPageCache;/* 0x40 8 */ void* StandbyPageList;/* 0x48 8 */ struct _MMPFNLIST* RepurposedStandbyPageList;/* 0x50 8 */ struct _LIST_ENTRY* SlabListsByIdentity;/* 0x58 8 */ volatile unsigned __int64 FreePageCount;/* 0x60 8 */ unsigned __int64 AvailablePagesGoal;/* 0x68 8 */ volatile unsigned __int64 ChargedPageCount;/* 0x70 8 */ volatile unsigned __int64 SlabEntryCount;/* 0x78 8 */ /* ── cacheline 2 boundary (128 bytes) ── */ enum _MI_SLAB_ALLOCATOR_TYPE Type;/* 0x80 4 */ struct _MI_NODE_NUMBER_ZERO_BASED NumaNodeIndex;/* 0x84 4 */ struct _MI_SLAB_ALLOCATOR_CONTEXT_FLAGS Flags;/* 0x88 4 */ volatile long ReEvaluateAllocationHint;/* 0x8c 4 */ unsigned long SlabEntriesAllocated;/* 0x90 4 */ unsigned long SlabEntriesDemoted;/* 0x94 4 */ unsigned long SlabEntriesFailedFast;/* 0x98 4 */ unsigned long SlabEntriesFailedSlow;/* 0x9c 4 */ unsigned long SlabPagesFreedNonZeroed;/* 0xa0 4 */ unsigned long SlabPagesCrossIdentity;/* 0xa4 4 */ unsigned __int64 LastReplenishTime;/* 0xa8 8 */ unsigned __int64 LastFailureTime;/* 0xb0 8 */ struct _WORK_QUEUE_ITEM ReplenishWorkItem;/* 0xb8 32 */ /* ── cacheline 3 boundary (192 bytes) ── */ struct _LIST_ENTRY ReplenishWaitList;/* 0xd8 16 */};size 232 (0xe8)26 members1 hole (4 bytes)padding 04 cachelines
Used in (1)