NTAPI
KiDispatchExceptionFromTrapFrame(
IN NTSTATUS Code,
+ IN ULONG Flags,
IN ULONG_PTR Address,
IN ULONG ParameterCount,
IN ULONG_PTR Parameter1,
IN PKTRAP_FRAME TrapFrame)
{
/* Helper for exceptions with no arguments */
- KiDispatchExceptionFromTrapFrame(Code, Address, 0, 0, 0, 0, TrapFrame);
+ KiDispatchExceptionFromTrapFrame(Code, 0, Address, 0, 0, 0, 0, TrapFrame);
}
//
IN PKTRAP_FRAME TrapFrame)
{
/* Helper for exceptions with no arguments */
- KiDispatchExceptionFromTrapFrame(Code, Address, 1, P1, 0, 0, TrapFrame);
+ KiDispatchExceptionFromTrapFrame(Code, 0, Address, 1, P1, 0, 0, TrapFrame);
}
//
IN PKTRAP_FRAME TrapFrame)
{
/* Helper for exceptions with no arguments */
- KiDispatchExceptionFromTrapFrame(Code, Address, 2, P1, P2, 0, TrapFrame);
+ KiDispatchExceptionFromTrapFrame(Code, 0, Address, 2, P1, P2, 0, TrapFrame);
}
//
VOID
NTAPI
KiDispatchExceptionFromTrapFrame(IN NTSTATUS Code,
+ IN ULONG Flags,
IN ULONG_PTR Address,
IN ULONG ParameterCount,
IN ULONG_PTR Parameter1,
/* Build the exception record */
ExceptionRecord.ExceptionCode = Code;
- ExceptionRecord.ExceptionFlags = 0;
+ ExceptionRecord.ExceptionFlags = Flags;
ExceptionRecord.ExceptionRecord = NULL;
ExceptionRecord.ExceptionAddress = (PVOID)Address;
ExceptionRecord.NumberParameters = ParameterCount;
/* Dispatch the exception */
KiDispatchExceptionFromTrapFrame(STATUS_BREAKPOINT,
+ 0,
TrapFrame->Eip - 1,
3,
Parameter1,
/* Only other choice is an in-page error, with 3 parameters */
KiDispatchExceptionFromTrapFrame(STATUS_IN_PAGE_ERROR,
+ 0,
TrapFrame->Eip,
3,
TrapFrame->ErrCode & 2 ? TRUE : FALSE,
if (KiUserTrap(TrapFrame))
{
/* Dispatch exception to user mode */
- KiDispatchException1Args(STATUS_STACK_BUFFER_OVERRUN,
- TrapFrame->Eip,
- TrapFrame->Ecx,
- TrapFrame);
+ KiDispatchExceptionFromTrapFrame(STATUS_STACK_BUFFER_OVERRUN,
+ EXCEPTION_NONCONTINUABLE,
+ TrapFrame->Eip,
+ 1,
+ TrapFrame->Ecx,
+ 0,
+ 0,
+ TrapFrame);
}
else
{