MiWorkingSetInfoCheckPageTable
INT64 __fastcall MiWorkingSetInfoCheckPageTable(INT64 a1, UINT64 a2, INT64 a3, CHAR a4, UINT8 a5){
unsigned int v9;
__int64 v10;
unsigned __int64 v11;
_MMPTE *PteBase;
__int64 v14[5];
v9 = 0;
v14[0] = MI_READ_PTE_LOCK_FREE(a2);
v10 = v14[0] & 0x800;
if( (v14[0] & 0x800) != 0 || (unsigned int)MiGetPagingFileOffset((MMPTE *)v14) )
{
if( (a4 & 1) != 0 )
{
if( v10 )
v11 = *(_QWORD *)(a3 + 8) & 0xFFFFFFFFFF1FFFFFui64 | 0x600000;
else
v11 = *(_QWORD *)(a3 + 8) & 0xFFFFFFFFFF1FFFFFui64 | 0xA00000;
*(_QWORD *)(a3 + 8) = v11;
}
else if( (a4 & 2) != 0 )
{
PteBase = MmGetPteBase();
MiUnlockPageTableInternal(a1, (UINT64)PteBase + ((a2 >> 9) & 0x7FFFFFFFF8i64));
MiMakeSystemAddressValid((__int64)((a2 << 25) - ((_QWORD)PteBase << 25)) >> 16, 0i64, 0i64, a5, 0);
MiUnlockPageTableInternal(a1, a2);
return 1;
}
}
return v9;
}Referenced by:
MiGetWorkingSetInfoList