MiUpdateUserMappings
VOID __stdcall MiUpdateUserMappings(UINT64 Restore){
_MMPTE *Pml4eBase;
INT64 v2;
UINT64 QuasiPte;
Pml4eBase = MmGetPml4eBase();
do
{
v2 = MI_READ_PTE_LOCK_FREE((INT64)Pml4eBase);
if( (v2 & 1) != 0 )
{
QuasiPte = MiMakeQuasiPte(v2);
}
else
{
if( (v2 & 0x400) == 0 )
goto LABEL_4;
QuasiPte = MiRevertQuasiPte(v2);
}
*(_QWORD *)Pml4eBase = QuasiPte;
LABEL_4:
Pml4eBase = (_MMPTE *)((char *)Pml4eBase + 8);
}
while( Pml4eBase <= MmGetPxeUserLimit() );
}Referenced by:
PopInvokeSystemStateHandler