FsRtlDeleteTunnelCache
VOID __stdcall FsRtlDeleteTunnelCache(TUNNEL *Cache, _LOOKASIDE_LIST_EX *a2){
LIST_ENTRY *p_TimerQueue;
TUNNEL *Flink;
TUNNEL *v4;
LIST_ENTRY *v5;
if( (_DWORD)TunnelMaxEntries )
{
p_TimerQueue = &Cache->TimerQueue;
Cache->Cache = 0i64;
Cache->NumEntries = 0;
Flink = (TUNNEL *)Cache->TimerQueue.Flink;
if( Flink != (TUNNEL *)&Cache->TimerQueue )
{
do
{
v4 = *(TUNNEL **)&Flink->Mutex.Count;
v5 = &Flink[-1].TimerQueue;
if( (*(_DWORD *)&Flink->Mutex.gap14[12] & 1) != 0 )
ExFreePoolWithTag(v5, 0);
else
ExFreeToNPagedLookasideList(&TunnelLookasideList, v5);
Flink = v4;
}
while( v4 != (TUNNEL *)p_TimerQueue );
}
p_TimerQueue->Blink = p_TimerQueue;
p_TimerQueue->Flink = p_TimerQueue;
}
}Referenced by:
No references.