MiCaptureSparsePages
NTSTATUS __stdcall MiCaptureSparsePages(_XSTATE_CONFIGURATION *a1, INT64 a2){
__int64 v3;
_XSTATE_CONFIGURATION *v4;
__int64 v5;
__int64 v6;
_MMPFN *PfnDb;
UINT64 v8;
unsigned __int64 PteShadow;
int v10;
__int64 v11;
__int64 v12;
UINT64 v14;
v3 = 0i64;
v4 = a1;
LODWORD(v5) = MiMakeValidPte(a1, *(&stru_140C4DB30 + 498), 1i64);
v6 = v5;
if( a2 )
{
PfnDb = MmGetPfnDb();
do
{
LODWORD(v8) = MI_READ_PTE_LOCK_FREE((INT64)v4);
v14 = v8;
PteShadow = v8;
if( v8 != v6 )
{
LOBYTE(v10) = MiPteInShadowRange((UINT64)&v14);
if( v10 )
PteShadow = MiReadPteShadow((__int64)&v14, PteShadow);
MiSetPfnLink(
&PfnDb[(PteShadow >> 12) & 0xFFFFFFFFFi64].u1.$976DF529DAC3D73085C9E386D94B91E6::$E228DCF3D8940E384DBC5EFCA756D8B6::_bf_0,
v3);
v3 = v11;
MiLockAndDecrementShareCount(&PfnDb[v12], 0i64);
}
v4 = (_XSTATE_CONFIGURATION *)((char *)v4 + 8);
--a2;
}
while( a2 );
}
return v3;
}Referenced by:
MiDeleteSparseRange