EtwTracePageFault

VOID __stdcall EtwTracePageFault(INT64 Status, VOID *VirtualAddress, CHAR PreviousMode, VOID *TrapFrame){
  INT16 v5; 
  _ETHREAD *CurrentThread; 
  INT64 v7; 
  int v8; 
  INT64 v9; 
  INT64 v10; 
  UINT64 a2; 
  VOID *SystemArgument1; 
  PGET_UPDATED_BUS_RESOURCE p_a2; 
  int v14; 
  int v15; 

  switch( (_DWORD)Status )
  {
    case 0x111:
      v5 = 523;
      break;
    case 0x110:
      v5 = 522;
      break;
    case 0x112:
      v5 = 524;
      break;
    case 0x114:
      v5 = 526;
      break;
    case 0x113:
      v5 = 525;
      break;
    case 0xC0000005:
      v5 = 527;
      break;
    default:
      return;
  }
  SystemArgument1 = 0i64;
  a2 = (UINT64)VirtualAddress;
  if( TrapFrame )
    SystemArgument1 = (VOID *)*((_QWORD *)TrapFrame + 45);
  v15 = 0;
  p_a2 = (PGET_UPDATED_BUS_RESOURCE)&a2;
  v14 = 16;
  CurrentThread = (_ETHREAD *)KeGetCurrentThread();
  if( (CurrentThread->$84F33738BEE95ACDF5C5BF1C8FDC7C8C::_bf_0 & 0x10) != 0 )
  {
    LODWORD(v7) = PsGetThreadServerSilo((INT64)CurrentThread);
    LODWORD(v10) = 33554690;
    EtwTraceSiloKernelEvent(v7, &p_a2, 1ui64, 0x1000ui64, v5, v10);
  }
  else
  {
    --CurrentThread->Tcb.SpecialApcDisable;
    CurrentThread->$84F33738BEE95ACDF5C5BF1C8FDC7C8C::_bf_0 |= 0x10u;
    v8 = PreviousMode != 0 ? 33558786 : 50338050;
    LODWORD(v9) = PsGetThreadServerSilo((INT64)CurrentThread);
    LODWORD(v10) = v8;
    EtwTraceSiloKernelEvent(v9, &p_a2, 1ui64, 0x1000ui64, v5, v10);
    CurrentThread->$84F33738BEE95ACDF5C5BF1C8FDC7C8C::_bf_0 &= ~0x10u;
    KiLeaveGuardedRegionUnsafe((__int64)CurrentThread);
    if( EtwpHostSiloState != -4548 && (*(_DWORD *)(EtwpHostSiloState + 4548) & 0x1000) != 0 )
      EtwpCoverageSamplerPageFault(SystemArgument1, a2, PreviousMode);
  }
}

Referenced by:

No references.