FsRtlEmptyFreePoolList
VOID __stdcall FsRtlEmptyFreePoolList(_LIST_ENTRY *FreePoolList){
_LIST_ENTRY *Flink;
_LIST_ENTRY *v3;
_LIST_ENTRY **p_Blink;
_LIST_ENTRY *Blink;
while( 1 )
{
Flink = FreePoolList->Flink;
if( FreePoolList->Flink == FreePoolList )
break;
v3 = Flink->Flink;
p_Blink = &Flink[-2].Blink;
if( Flink->Flink->Blink != Flink || (Blink = Flink->Blink, Blink->Flink != Flink) )
__fastfail(3u);
Blink->Flink = v3;
v3->Blink = Blink;
if( ((_DWORD)p_Blink[7] & 1) != 0 )
ExFreePoolWithTag(p_Blink, 0);
else
ExFreeToNPagedLookasideList((NPAGED_LOOKASIDE_LIST *)TunnelLookasideList, p_Blink);
}
}Referenced by:
FsRtlAddToTunnelCacheEx
FsRtlDeleteKeyFromTunnelCache
FsRtlFindInTunnelCacheEx