MiFreeUltraMapping
INT64 __fastcall MiFreeUltraMapping(UINT64 a1){
_QWORD *v1;
unsigned __int64 v2;
INT64 result;
struct _KLOCK_QUEUE_HANDLE LockHandle;
memset(&LockHandle, 0, sizeof(LockHandle));
v1 = (_QWORD *)((char *)MmGetPdpteBase() + ((a1 >> 27) & 0x1FFFF8));
v2 = (a1 - qword_140C4E938) >> 30;
KeAcquireInStackQueuedSpinLock(&qword_140C4E930, &LockHandle);
_bittestandset64((signed __int64 *)qword_140C4E960, v2);
*v1 = ZeroPte;
KeReleaseInStackQueuedSpinLockFromDpcLevel(&LockHandle);
result = (unsigned int)KiIrqlFlags;
__writecr8(LockHandle.OldIrql);
return result;
}Referenced by:
MiReleaseLargeZeroingVa
MiZeroPage