PspSetProcessDefaultHardErrorMode

VOID __stdcall PspSetProcessDefaultHardErrorMode(
        _EPROCESS *Process,
        _ETHREAD *CurrentThread,
        UINT64 DefaultHardErrorMode){
  unsigned int v3; 
  _EX_PUSH_LOCK *p_ProcessLock; 
  unsigned int v7; 

  v3 = DefaultHardErrorMode;
  --CurrentThread->Tcb.KernelApcDisable;
  p_ProcessLock = &Process->ProcessLock;
  ExAcquirePushLockExclusiveEx(&Process->ProcessLock, 0i64);
  if( Process->DefaultHardErrorProcessing != v3 )
  {
    Process->DefaultHardErrorProcessing = v3;
    v7 = (v3 >> 2) & 1;
    if( Process->WoW64Process )
      v7 = 1;
    KeSetAutoAlignmentProcess(&Process->Pcb, v7);
  }
  if( (_InterlockedExchangeAdd64(&p_ProcessLock->_bf_0, 0xFFFFFFFFFFFFFFFFui64) & 6) == 2 )
    ExfTryToWakePushLock(p_ProcessLock);
  KeAbPostRelease(p_ProcessLock);
  KeLeaveCriticalRegionThread(&CurrentThread->Tcb);
}

Referenced by:

NtSetInformationProcess