ExpSvmServicePageFault
NTSTATUS __stdcall ExpSvmServicePageFault(UINT64 FaultStatus, PVOID FaultingVa, UINT64 Asid){
unsigned int v3;
char v5;
_EPROCESS *Process;
_EPROCESS *v7;
char v8;
NTSTATUS v9;
UINT64 v10;
_KLOCK_QUEUE_HANDLE LockHandle;
_KAPC_STATE ApcState;
v3 = Asid;
memset(&ApcState, 0, sizeof(ApcState));
v5 = FaultStatus;
memset(&LockHandle, 0, sizeof(LockHandle));
Process = KeGetCurrentThread()->ApcState.Process;
KeAcquireInStackQueuedSpinLock((PKSPIN_LOCK)&WheapDeferredInternalLogsEventLock + 291, &LockHandle);
v7 = *(_EPROCESS **)(*(&WheapDeferredInternalLogsEventLock + 290) + 16i64 * v3);
KeReleaseInStackQueuedSpinLockFromDpcLevel(&LockHandle);
__writecr8(LockHandle.OldIrql);
v8 = 0;
if( Process != v7 )
{
KiStackAttachProcess(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.