ViLookasideDelete
VOID __stdcall ViLookasideDelete(GENERAL_LOOKASIDE *Lookaside){
void *v2;
UINT64 v3;
__int128 v4;
v4 = 0i64;
if( ViLookasideInitialized )
{
v2 = 0i64;
VfAvlInitializeLockContext((INT64)&v4, 0i64);
if( VfAvlLookupTreeNode(&ViLookasideAvl, (INT64)&v4, (UINT64)Lookaside, 0i64) )
{
v2 = (void *)VfAvlDeleteTreeNode((INT64)&ViLookasideAvl, (INT64)&v4, (UINT64)Lookaside, 0i64);
}
else if( !ViLookasideAllocationFailures && !ViLookasideAlreadyLoadedDrivers && (MmVerifierData & 0x800) != 0 )
{
VerifierBugCheckIfAppropriate(0xC4ui64, 0xCBui64, (UINT64)Lookaside, 0i64, 0i64, v3);
}
VfAvlCleanupLockContext((INT64)&v4);
if( v2 )
{
if( dword_140D4A4F8 == 1 )
ExFreeToNPagedLookasideList((NPAGED_LOOKASIDE_LIST *)ViAvlNodeLookaside, v2);
else
VfUtilFreePoolCheckIRQL(v2);
}
}
}Referenced by:
VerifierExDeleteLookasideListEx
VerifierExDeleteNPagedLookasideList
VerifierExDeletePagedLookasideList