MiMakeProtoLeafValid
_MMPTE *__stdcall MiMakeProtoLeafValid(ULONG_PTR PointerPte, UINT64 ProtectionMask, UINT8 WsIrql){
VOID *v4;
_MMSUPPORT_FULL *p_Vm;
char *v6;
char i;
UINT64 v8;
UINT8 v9;
UINT64 v11;
v4 = *(VOID **)&PointerPte;
p_Vm = &KeGetCurrentThread()->ApcState.Process->Vm;
v6 = (char *)MmGetPteBase() + ((*(_QWORD *)&PointerPte >> 9) & 0x7FFFFFFFF8i64);
for( i = MI_READ_PTE_LOCK_FREE(*(INT64 *)&PointerPte); (i & 1) == 0; i = MI_READ_PTE_LOCK_FREE((INT64)v4) )
{
MiUnlockPageTableInternal((INT64)p_Vm, (UINT64)v6);
LOBYTE(v8) = WsIrql;
MiUnlockWorkingSetShared(&p_Vm->Instance, v8);
MiLockWorkingSetShared();
WsIrql = v9;
LODWORD(v11) = 0;
MiMakeSystemAddressValid(v4, 0i64, 0i64, v9, v11);
}
return 0i64;
}Referenced by:
MiProtectPrivateMemory
MiSetProtectionOnSection
MiSplitPrivatePage
MiWalkVaRange