MiMakeProtoLeafValid
MMPTE *__stdcall MiMakeProtoLeafValid(MMPTE *PointerPte, UINT64 ProtectionMask, UINT8 WsIrql){
INT64 v5;
char *v6;
char i;
v5 = *((_QWORD *)KeGetCurrentThread() + 23) + 1664i64;
v6 = (char *)MmGetPteBase() + (((unsigned __int64)PointerPte >> 9) & 0x7FFFFFFFF8i64);
for( i = MI_READ_PTE_LOCK_FREE((INT64)PointerPte); (i & 1) == 0; i = MI_READ_PTE_LOCK_FREE((INT64)PointerPte) )
{
MiUnlockPageTableInternal(v5, (UINT64)v6);
MiUnlockWorkingSetShared(v5, WsIrql);
WsIrql = MiLockWorkingSetShared(v5);
MiMakeSystemAddressValid((UINT64)PointerPte, 0i64, 0i64, WsIrql, 0);
}
return 0i64;
}Referenced by:
MiProtectPrivateMemory
MiSetProtectionOnSection
MiSplitPrivatePage
MiWalkVaRange