MiFreeUnmappedPageTables
VOID __stdcall MiFreeUnmappedPageTables(_MMPFN *PfnAllocation, _MI_DELETE_VA_INFO *DeleteInfo){
__int64 v2;
_MMPFN *v4;
_MMPFN *bf_0;
unsigned __int64 v6;
v2 = 0i64;
v4 = PfnAllocation;
if( PfnAllocation )
{
do
{
bf_0 = (_MMPFN *)v4->u1.$976DF529DAC3D73085C9E386D94B91E6::$E228DCF3D8940E384DBC5EFCA756D8B6::_bf_0;
v6 = MiLockPageInline(v4);
*((_BYTE *)&v4->u3 + 2) = *(_BYTE *)(&v4->u3 + 1) & 0xF8 | 6;
if( MiDecrementShareCount(v4) == PageStillReferenced )
++*(_QWORD *)&DeleteInfo->ReducedCommitClonePages;
_InterlockedAnd64(&v4->u2.Lock, 0x7FFFFFFFFFFFFFFFui64);
__writecr8(v6);
++v2;
v4 = bf_0;
}
while( bf_0 );
}
*(_QWORD *)&DeleteInfo[1].ReducedCommitClonePages += v2;
*(_QWORD *)&DeleteInfo->ResidentPages += v2;
}Referenced by:
MiDeleteSystemPageTableTail