ExInitializePagedLookasideListInternal
VOID __stdcall ExInitializePagedLookasideListInternal(
PAGED_LOOKASIDE_LIST *Lookaside,
VOID **Allocate,
POOL_TYPE a3,
UINT64 a4,
UINT64 a5,
VOID *Free,
VOID *a7,
INT64 Flags,
UINT64 Size,
INT64 Tag,
INT64 Depth,
INT64 FixedDepth){
int v12;
VOID *(__stdcall *v13)(PVOID, UINT32);
unsigned __int64 v16;
_LIST_ENTRY *v17;
_LIST_ENTRY *p_ListEntry;
v12 = a4;
v13 = *(VOID *(__stdcall **)(PVOID, UINT32))&a3;
InitializeSListHead(&Lookaside->L.ListHead);
Lookaside->L.Depth = ExMinimumLookasideDepth;
*(_QWORD *)&Lookaside->L.TotalAllocates = 0i64;
Lookaside->L.MaximumDepth = 256;
Lookaside->L.Tag = (unsigned int)Free;
Lookaside->L.Size = a5;
*(_QWORD *)&Lookaside->L.TotalFrees = 0i64;
Lookaside->L.Type = v12 | 1;
if( !Allocate )
Allocate = (VOID **)ExAllocatePoolWithTag;
Lookaside->L.AllocateEx = (void *(__fastcall *)(_POOL_TYPE, unsigned __int64, unsigned int, _LOOKASIDE_LIST_EX *))Allocate;
if( !v13 )
v13 = ExFreePoolWithTag;
Lookaside->L.FreeEx = (void(__fastcall *)(void *, _LOOKASIDE_LIST_EX *))v13;
*(_QWORD *)&Lookaside->L.LastTotalAllocates = 0i64;
v16 = (unsigned __int8)KeAcquireSpinLockRaiseToDpc((UINT64 *)&WheapDeferredInternalLogsEventLock + 356);
if( (_DWORD)Flags )
{
Lookaside->L.MaximumDepth = -1;
Lookaside->L.Depth = (unsigned __int16)a7;
}
else if( !ExMinimumLookasideDepth )
{
*(_DWORD *)&Lookaside->L.Depth = -65536;
}
v17 = (_LIST_ENTRY *)*(&WheapDeferredInternalLogsEventLock + 353);
p_ListEntry = &Lookaside->L.ListEntry;
if( (_UNKNOWN *)**(&WheapDeferredInternalLogsEventLock + 353) != (_UNKNOWN *)((char *)&WheapDeferredInternalLogsEventLock
+ 2816) )
__fastfail(3u);
p_ListEntry->Flink = (_LIST_ENTRY *)((char *)&WheapDeferredInternalLogsEventLock + 2816);
p_ListEntry->Blink = v17;
v17->Flink = p_ListEntry;
*(&WheapDeferredInternalLogsEventLock + 353) = p_ListEntry;
KxReleaseSpinLock((UINT64 *)&WheapDeferredInternalLogsEventLock + 356);
__writecr8(v16);
}Referenced by:
No references.