NtSetDefaultHardErrorPort

NTSTATUS __stdcall NtSetDefaultHardErrorPort(VOID *DefaultHardErrorPort){
  _ESERVERSILO_GLOBALS *CurrentServerSiloGlobals; 
  NTSTATUS result; 
  _EPROCESS *Process; 
  PVOID Object; 

  CurrentServerSiloGlobals = PsGetCurrentServerSiloGlobals((_KSPIN_LOCK *)DefaultHardErrorPort);
  if( !SeSinglePrivilegeCheck(*(_QWORD *)&SeTcbPrivilege, KeGetCurrentThread()->PreviousMode) )
    return -1073741727;
  if( CurrentServerSiloGlobals->HardErrorState == 1 )
    return -1073741823;
  Object = 0i64;
  result = ObReferenceObjectByHandle(
             DefaultHardErrorPort,
             0i64,
             LpcPortObjectType,
             KeGetCurrentThread()->PreviousMode,
             &Object,
             0i64);
  CurrentServerSiloGlobals->ExpDefaultErrorPort = Object;
  if( result >= 0 )
  {
    if( !PsIsCurrentThreadInServerSilo() )
      ExReadyForErrors = 1;
    CurrentServerSiloGlobals->HardErrorState = 1;
    Process = KeGetCurrentThread()->ApcState.Process;
    CurrentServerSiloGlobals->ExpDefaultErrorPortProcess = Process;
    ObfReferenceObject(Process);
    return 0;
  }
  return result;
}

Referenced by:

No references.