3 * COPYRIGHT: See COPYING in the top level directory
4 * PROJECT: ReactOS kernel
5 * FILE: ntoskrnl/ke/error.c
6 * PURPOSE: Error reason setting/getting
8 * PROGRAMMERS: David Welch
11 /* INCLUDE *****************************************************************/
14 #include <internal/debug.h>
16 /* FUNCTIONS ***************************************************************/
18 BOOLEAN ExReadyForErrors
= FALSE
;
19 PEPORT ExpDefaultErrorPort
= NULL
;
20 PEPROCESS ExpDefaultErrorPortProcess
= NULL
;
39 KiUnexpectedInterrupt(
47 NtRaiseHardError(IN NTSTATUS ErrorStatus
,
48 IN ULONG NumberOfParameters
,
49 IN PUNICODE_STRING UnicodeStringParameterMask OPTIONAL
,
51 IN HARDERROR_RESPONSE_OPTION ResponseOption
,
52 OUT PHARDERROR_RESPONSE Response
)
54 DPRINT1("Hard error %x\n", ErrorStatus
);
55 return(STATUS_SUCCESS
);
59 NtSetDefaultHardErrorPort(IN HANDLE PortHandle
)
61 KPROCESSOR_MODE PreviousMode
;
64 PreviousMode
= ExGetPreviousMode();
66 if(!SeSinglePrivilegeCheck(SeTcbPrivilege
,
69 DPRINT1("NtSetDefaultHardErrorPort: Caller requires the SeTcbPrivilege privilege!\n");
70 return STATUS_PRIVILEGE_NOT_HELD
;
73 /* serialization shouldn't be required here as it usually is just called once
78 Status
= ObReferenceObjectByHandle(PortHandle
,
82 (PVOID
*)&ExpDefaultErrorPort
,
84 if(NT_SUCCESS(Status
))
86 ExpDefaultErrorPortProcess
= PsGetCurrentProcess();
87 ExReadyForErrors
= TRUE
;
92 Status
= STATUS_UNSUCCESSFUL
;