MiGetPteMappingPair
VOID __stdcall MiGetPteMappingPair(UINT64 SystemPtesOk, _MMPTE_COPY_LIST *PteCopyList){
unsigned __int8 CurrentIrql;
unsigned __int64 HyperSpace;
if( (_DWORD)SystemPtesOk != 1 || (MiCreatePteCopyList(2ui64, 2ui64, PteCopyList), !PteCopyList[1]) )
{
CurrentIrql = KeGetCurrentIrql();
__writecr8(2ui64);
*((_BYTE *)PteCopyList + 8) = CurrentIrql;
HyperSpace = (unsigned __int64)MiAllocateHyperSpace();
*PteCopyList = 0;
PteCopyList[1] = 2;
*((_BYTE *)PteCopyList + 9) = 1;
*((_QWORD *)PteCopyList + 2) = (char *)MmGetPteBase() + ((HyperSpace >> 9) & 0x7FFFFFFFF8i64);
}
}Referenced by:
MiSlowRotateCopy