PfTCleanupBuffers
VOID __stdcall PfTCleanupBuffers(_PFP_BUFFER_MANAGER *BufferMgr){
_PFP_BUFFER_MANAGER *v2;
_QWORD *v3;
__int64 v4;
_QWORD *v5;
void *v6;
v2 = BufferMgr + 1;
while( 1 )
{
v3 = *(_QWORD **)&v2->_bf_0;
if( *(_PFP_BUFFER_MANAGER **)&v2->_bf_0 == v2 )
break;
if( (_PFP_BUFFER_MANAGER *)v3[1] != v2 || (v4 = *v3, *(_QWORD **)(*v3 + 8i64) != v3) )
__fastfail(3u);
*(_QWORD *)&v2->_bf_0 = v4;
*(_QWORD *)(v4 + 8) = v2;
ExFreePoolWithTag(v3, 0);
}
v5 = *(_QWORD **)BufferMgr->ActiveBufferListHead;
if( v5 )
{
*(_QWORD *)BufferMgr->ActiveBufferListHead = *v5;
do
{
v6 = v5;
v5 = *(_QWORD **)BufferMgr->ActiveBufferListHead;
if( v5 )
*(_QWORD *)BufferMgr->ActiveBufferListHead = *v5;
ExFreePoolWithTag(v6, 0);
}
while( v5 );
}
BufferMgr->FreeBufferCount = 0;
}Referenced by:
PfTCleanup