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.