ExpSystemErrorHandler
VOID __stdcall ExpSystemErrorHandler(
INT64 ErrorStatus,
UINT64 NumberOfParameters,
UINT64 UnicodeStringParameterMask,
UINT64 *Parameters,
UINT8 CallShutdown,
UINT64 Parametersa){
__int64 v6;
__int64 CurrentIrql;
struct _KPRCB *CurrentPrcb;
_CONTEXT *Context;
__int64 v10[2];
void *retaddr;
v10[0] = v6;
CurrentIrql = KeGetCurrentIrql();
__writecr8(2ui64);
_InterlockedExchange64(v10, CurrentIrql);
RtlCaptureContext(KeGetCurrentPrcb()->Context);
KiSaveProcessorControlState(&KeGetCurrentPrcb()->ProcessorState);
CurrentPrcb = KeGetCurrentPrcb();
CurrentPrcb->ProcessorState.SpecialRegisters.Cr8 = v10[0];
Context = CurrentPrcb->Context;
Context->_Rcx = ErrorStatus;
*(_QWORD *)&Context->EFlags = v10[1];
Context->_Rsp = (unsigned __int64)&retaddr;
Context->_Rip = (unsigned __int64)ExpSystemErrorHandler;
__writecr8(v10[0]);
ExpSystemErrorHandler2(ErrorStatus, NumberOfParameters, UnicodeStringParameterMask, Parameters, CallShutdown);
}Referenced by:
ExpRaiseHardError