MiFaultInPagedPool
CHAR __fastcall MiFaultInPagedPool(UINT64 a1){
UINT64 v2;
_MMPTE *PteBase;
unsigned __int64 v4;
UINT64 v5;
CHAR *AnyMultiplexedVm;
UINT8 v7;
__int16 v8;
v2 = (a1 >> 9) & 0x7FFFFFFFF8i64;
PteBase = MmGetPteBase();
v4 = (unsigned __int64)PteBase + v2;
v5 = (UINT64)PteBase + ((v4 >> 9) & 0x7FFFFFFFF8i64);
AnyMultiplexedVm = MiGetAnyMultiplexedVm(2i64);
v7 = MiLockWorkingSetShared((INT64)AnyMultiplexedVm);
MiLockPageTableInternal((INT64)AnyMultiplexedVm, v5, 0i64);
v8 = MI_READ_PTE_LOCK_FREE(v4);
if( (v8 & 1) != 0 && (v8 & 0x200) != 0 )
MiCopyOnWrite(a1, (UINT64 *)v4, -1i64, 4i64);
MiUnlockPageTableInternal((INT64)AnyMultiplexedVm, v5);
MiUnlockWorkingSetShared((INT64)AnyMultiplexedVm, v7);
return *(_BYTE *)a1;
}Referenced by:
MiProtectPrivateMemory
MiQueryAddressState