ExpSvmServicePageFault
NTSTATUS __stdcall ExpSvmServicePageFault(UINT64 FaultStatus, PVOID FaultingVa, UINT64 Asid){
int v3;
char v5;
_EPROCESS *v6;
_KPROCESS *v7;
char v8;
NTSTATUS v9;
UINT64 v10;
struct _KLOCK_QUEUE_HANDLE LockHandle;
_KAPC_STATE ApcState;
v3 = Asid;
memset(&ApcState, 0, sizeof(ApcState));
v5 = FaultStatus;
memset(&LockHandle, 0, sizeof(LockHandle));
v6 = (_EPROCESS *)*((_QWORD *)KeGetCurrentThread() + 23);
KeAcquireInStackQueuedSpinLock(&qword_140C166D8, &LockHandle);
v7 = *(_EPROCESS **)&qword_140C166D0[16 * v3];
KeReleaseInStackQueuedSpinLockFromDpcLevel(&LockHandle);
__writecr8(LockHandle.OldIrql);
v8 = 0;
if( v6 != v7 )
{
KiStackAttachProcess((_KPROCESS *)v7, 0i64, &ApcState);
v8 = 1;
}
if( (v5 & 8) != 0 )
{
v9 = -1073741819;
}
else
{
v10 = v5 & 2 | 0x10i64;
if( (v5 & 4) == 0 )
v10 = v5 & 2;
v9 = MmAccessFault(v10, FaultingVa, 1, 0i64);
}
if( v8 )
KiUnstackDetachProcess(&ApcState, 0i64);
return v9;
}Referenced by:
No references.