MiReleaseFaultPte
NTSTATUS __stdcall MiReleaseFaultPte(_XSTATE_CONFIGURATION *a1){
unsigned __int64 Long;
int v3;
__int64 v4;
NTSTATUS result;
_KLOCK_QUEUE_HANDLE LockHandle;
Long = ZeroPte.u.Long;
memset(&LockHandle, 0, sizeof(LockHandle));
LOBYTE(v3) = MiPteInShadowRange((UINT64)a1);
if( v3 && (KeGetCurrentThread()->ApcState.Process->Flags3 & 0x1000) != 0 && (ZeroPte.u.Long & 1) != 0 )
Long = ZeroPte.u.Long | 0x8000000000000000ui64;
a1->EnabledFeatures = Long;
KeFlushSingleTb((__int64)(((_QWORD)a1 << 25) - ((_QWORD)MmGetPteBase() << 25)) >> 16, FlushKernel, 1i64);
v4 = ((__int64)a1 - *(&stru_140C4DB30 + 489)) >> 3;
KeAcquireInStackQueuedSpinLock((PKSPIN_LOCK)&stru_140C4DB30 + 490, &LockHandle);
_bittestandreset((signed __int32 *)&stru_140C4DB30 + 982, v4);
KeReleaseInStackQueuedSpinLockFromDpcLevel(&LockHandle);
result = KiIrqlFlags;
__writecr8(LockHandle.OldIrql);
return result;
}Referenced by:
MiValidateImagePfn