MiFaultInPagedPool
CHAR __stdcall MiFaultInPagedPool(UINT64 a1){
VOID *v1;
UINT64 v3;
_MMPTE *PteBase;
unsigned __int64 v5;
UINT64 v6;
_MMSUPPORT_INSTANCE *AnyMultiplexedVm;
char v8;
char v9;
__int16 v10;
UINT64 v11;
v3 = (a1 >> 9) & 0x7FFFFFFFF8i64;
PteBase = MmGetPteBase();
v5 = (unsigned __int64)PteBase + v3;
v6 = (UINT64)PteBase + ((v5 >> 9) & 0x7FFFFFFFF8i64);
AnyMultiplexedVm = MiGetAnyMultiplexedVm(MiWorkingSetTypePagedPool, v1);
MiLockWorkingSetShared();
v9 = v8;
MiLockPageTableInternal((INT64)AnyMultiplexedVm, v6, 0i64);
v10 = MI_READ_PTE_LOCK_FREE(v5);
if( (v10 & 1) != 0 && (v10 & 0x200) != 0 )
MiCopyOnWrite(a1, (INT64 *)v5, 0xFFFFFFFFFFFFFFFFui64, 4i64);
MiUnlockPageTableInternal((INT64)AnyMultiplexedVm, v6);
LOBYTE(v11) = v9;
MiUnlockWorkingSetShared(AnyMultiplexedVm, v11);
return *(_BYTE *)a1;
}Referenced by:
MiProtectPrivateMemory
MiQueryAddressState