144 return TrapFrame->HardwareEsp;
152 return TrapFrame->TempEsp;
157 return (
ULONG)&TrapFrame->HardwareEsp;
182 TrapFrame->HardwareEsp = Esp;
187 if (Esp < Previous)
KeBugCheckEx(SET_OF_INVALID_CONTEXT,
197 TrapFrame->TempEsp = Esp;
205 TrapFrame->TempSegCs = TrapFrame->SegCs;
209 TrapFrame->TempEsp = Esp;
226 return TrapFrame->HardwareSegSs;
231 return TrapFrame->HardwareSegSs |
RPL_MASK;
252 TrapFrame->HardwareSegSs = Ss;
257 TrapFrame->HardwareSegSs = Ss |
RPL_MASK;
265 INT FxTagWord = ~TagWord;
271 FxTagWord = (FxTagWord | (FxTagWord >> 1)) & 0x5555;
272 FxTagWord = (FxTagWord | (FxTagWord >> 1)) & 0x3333;
273 FxTagWord = (FxTagWord | (FxTagWord >> 2)) & 0x0f0f;
274 FxTagWord = (FxTagWord | (FxTagWord >> 4)) & 0x00ff;
352 TrapFrame->SegCs =
Context->SegCs;
396 TrapFrame->V86Ds =
Context->SegDs;
397 TrapFrame->V86Es =
Context->SegEs;
398 TrapFrame->V86Fs =
Context->SegFs;
399 TrapFrame->V86Gs =
Context->SegGs;
407 TrapFrame->SegGs = 0;
412 TrapFrame->SegDs =
Context->SegDs;
413 TrapFrame->SegEs =
Context->SegEs;
414 TrapFrame->SegFs =
Context->SegFs;
420 TrapFrame->SegGs = 0;
425 TrapFrame->SegGs =
Context->SegGs;
445 &
Context->ExtendedRegisters[0],
490 Context->FloatSave.ErrorOffset;
492 Context->FloatSave.ErrorSelector & 0xFFFF;
496 Context->FloatSave.DataSelector;
503 for (
i = 0;
i < 8;
i++)
507 Context->FloatSave.RegisterArea + (
i * 10),
579 if (TrapFrame->Dr0) DrMask |=
DR_MASK(0);
580 if (TrapFrame->Dr1) DrMask |=
DR_MASK(1);
581 if (TrapFrame->Dr2) DrMask |=
DR_MASK(2);
582 if (TrapFrame->Dr3) DrMask |=
DR_MASK(3);
583 if (TrapFrame->Dr6) DrMask |=
DR_MASK(6);
630 Context->EFlags = TrapFrame->EFlags;
637 Context->SegCs = TrapFrame->TempSegCs & 0xFFFF;
642 Context->SegCs = TrapFrame->SegCs & 0xFFFF;
657 Context->SegGs = TrapFrame->V86Gs & 0xFFFF;
658 Context->SegFs = TrapFrame->V86Fs & 0xFFFF;
659 Context->SegEs = TrapFrame->V86Es & 0xFFFF;
660 Context->SegDs = TrapFrame->V86Ds & 0xFFFF;
668 TrapFrame->SegGs = 0;
675 Context->SegGs = TrapFrame->SegGs & 0xFFFF;
676 Context->SegFs = TrapFrame->SegFs & 0xFFFF;
677 Context->SegEs = TrapFrame->SegEs & 0xFFFF;
678 Context->SegDs = TrapFrame->SegDs & 0xFFFF;
729 ((
ULONG_PTR)&FloatSaveBuffer.UnalignedArea &~ 0xF);
755 Context->FloatSave.RegisterArea[
i] =
808 if (!TrapInformation)
return FALSE;
811 switch (TrapFrame->
SegCs)
873 switch (ExceptionRecord->ExceptionCode)
902 if (FirstChance !=
FALSE)
934 ExceptionRecord->ExceptionCode,
935 (
ULONG_PTR)ExceptionRecord->ExceptionAddress,
1000 ExceptionRecord->NumberParameters) *
1001 sizeof(
ULONG) + 3) & ~3;
1023 TrapFrame->SegGs = 0;
1039 ExceptionRecord->ExceptionAddress;
1041 (
PVOID)&LocalExceptRecord,
1050 DPRINT(
"First chance exception in %.16s, ExceptionCode: %lx, ExceptionAddress: %p, P0: %lx, P1: %lx\n",
1052 ExceptionRecord->ExceptionCode,
1053 ExceptionRecord->ExceptionAddress,
1054 ExceptionRecord->ExceptionInformation[0],
1055 ExceptionRecord->ExceptionInformation[1]);
1071 DPRINT1(
"Kill %.16s, ExceptionCode: %lx, ExceptionAddress: %p, BaseAddress: %p, P0: %lx, P1: %lx\n",
1073 ExceptionRecord->ExceptionCode,
1074 ExceptionRecord->ExceptionAddress,
1076 ExceptionRecord->ExceptionInformation[0],
1077 ExceptionRecord->ExceptionInformation[1]);
1081 ExceptionRecord->ExceptionCode,
1082 (
ULONG_PTR)ExceptionRecord->ExceptionAddress,
1179 OldEip = TrapFrame->
Eip;
#define KeGetCurrentIrql()
#define SIZE_OF_FX_REGISTERS
_Inout_ PIRP _In_ NTSTATUS ExceptionCode
#define KeRaiseIrql(irql, oldIrql)
DBGKD_GET_VERSION64 KdVersionBlock
#define CONTEXT_EXTENDED_REGISTERS
#define KeLowerIrql(oldIrql)
PKDEBUG_ROUTINE KiDebugRoutine
#define DR7_OVERRIDE_MASK
BOOLEAN FASTCALL KiRecordDr7(OUT PULONG Dr7Ptr, OUT PULONG DrMask)
ULONG FASTCALL KiUpdateDr7(IN ULONG Dr7)
FORCEINLINE ULONG Ke386SanitizeFlags(IN ULONG Eflags, IN KPROCESSOR_MODE Mode)
FORCEINLINE struct _KPRCB * KeGetCurrentPrcb(VOID)
#define CONTEXT_FLOATING_POINT
IN PVOID IN PVOID IN USHORT IN USHORT Size
#define EXCEPTION_MAXIMUM_PARAMETERS
NTSYSAPI VOID NTAPI RtlRaiseException(_In_ PEXCEPTION_RECORD ExceptionRecord)
DECLSPEC_NORETURN VOID FASTCALL KiEoiHelper(IN PKTRAP_FRAME TrapFrame)
#define DECLSPEC_NORETURN
VOID NTAPI ProbeForWrite(IN PVOID Address, IN SIZE_T Length, IN ULONG Alignment)
VOID NTAPI KiSsToTrapFrame(IN PKTRAP_FRAME TrapFrame, IN ULONG Ss)
_In_ WDFREQUEST _In_ PIO_STACK_LOCATION Stack
VOID NTAPI KeTrapFrameToContext(IN PKTRAP_FRAME TrapFrame, IN PKEXCEPTION_FRAME ExceptionFrame, IN OUT PCONTEXT Context)
struct _KTRAP_FRAME KTRAP_FRAME
__INTRIN_INLINE uintptr_t __readeflags(void)
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
PVOID KeRaiseUserExceptionDispatcher
struct _EXCEPTION_RECORD EXCEPTION_RECORD
DECLSPEC_NORETURN VOID NTAPI KeBugCheckWithTf(ULONG BugCheckCode, ULONG_PTR BugCheckParameter1, ULONG_PTR BugCheckParameter2, ULONG_PTR BugCheckParameter3, ULONG_PTR BugCheckParameter4, PKTRAP_FRAME Tf)
#define PsGetCurrentProcess
#define _SEH2_GetExceptionInformation()
#define EXCEPTION_EXECUTE_HANDLER
#define STATUS_BREAKPOINT
_At_(*)(_In_ PWSK_CLIENT Client, _In_opt_ PUNICODE_STRING NodeName, _In_opt_ PUNICODE_STRING ServiceName, _In_opt_ ULONG NameSpace, _In_opt_ GUID *Provider, _In_opt_ PADDRINFOEXW Hints, _Outptr_ PADDRINFOEXW *Result, _In_opt_ PEPROCESS OwningProcess, _In_opt_ PETHREAD OwningThread, _Inout_ PIRP Irp Result)(Mem)) NTSTATUS(WSKAPI *PFN_WSK_GET_ADDRESS_INFO
DECLSPEC_NORETURN VOID NTAPI KiDispatchExceptionFromTrapFrame(IN NTSTATUS Code, IN ULONG Flags, IN ULONG_PTR Address, IN ULONG ParameterCount, IN ULONG_PTR Parameter1, IN ULONG_PTR Parameter2, IN ULONG_PTR Parameter3, IN PKTRAP_FRAME TrapFrame)
VOID NTAPI ExpInterlockedPopEntrySListFault(VOID)
#define NtCurrentProcess()
BOOLEAN KdIgnoreUmExceptions
UCHAR RegisterArea[SIZE_OF_80387_REGISTERS]
NTSYSAPI BOOLEAN NTAPI RtlDispatchException(_In_ PEXCEPTION_RECORD ExceptionRecord, _In_ PCONTEXT Context)
_In_ KPROCESSOR_MODE PreviousMode
ULONG_PTR ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS]
DECLSPEC_NORETURN VOID FASTCALL KiSystemFatalException(IN ULONG ExceptionCode, IN PKTRAP_FRAME TrapFrame)
struct _FX_SAVE_AREA FX_SAVE_AREA
_Must_inspect_result_ _In_ ULONG Flags
#define _SEH2_YIELD(STMT_)
BOOLEAN NTAPI DbgkForwardException(IN PEXCEPTION_RECORD ExceptionRecord, IN BOOLEAN DebugPort, IN BOOLEAN SecondChance)
USHORT NTAPI KiTagWordFnsaveToFxsave(USHORT TagWord)
#define DR7_RESERVED_MASK
_In_opt_ PFILE_OBJECT _In_opt_ PETHREAD Thread
BOOLEAN NTAPI KdIsThisAKdTrap(IN PEXCEPTION_RECORD ExceptionRecord, IN PCONTEXT Context, IN KPROCESSOR_MODE PreviousMode)
PVOID KeUserExceptionDispatcher
ULONG NTAPI KiEspFromTrapFrame(IN PKTRAP_FRAME TrapFrame)
_Requires_lock_held_ Interrupt _Releases_lock_ Interrupt _In_ _IRQL_restores_ KIRQL OldIrql
__INTRIN_INLINE void __writeeflags(uintptr_t Value)
#define CONTEXT_DEBUG_REGISTERS
_In_ UCHAR _In_ UCHAR _In_ ULONG Code
FORCEINLINE BOOLEAN KiUserTrap(IN PKTRAP_FRAME TrapFrame)
FORCEINLINE ULONG Ke386SanitizeSeg(IN ULONG Cs, IN KPROCESSOR_MODE Mode)
VOID NTAPI KiEspToTrapFrame(IN PKTRAP_FRAME TrapFrame, IN ULONG Esp)
struct _EXCEPTION_RECORD * ExceptionRecord
KIDTENTRY KiIdt[MAXIMUM_IDTVECTOR+1]
struct _FX_SAVE_AREA * PFX_SAVE_AREA
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
#define STATUS_ACCESS_VIOLATION
union _FX_SAVE_AREA::@2422 U
#define MAXIMUM_SUPPORTED_EXTENSION
VOID NTAPI KiFlushNPXState(IN FLOATING_SAVE_AREA *SaveArea)
#define FIELD_OFFSET(t, f)
PVOID MmHighestUserAddress
#define STATUS_STACK_OVERFLOW
NTSTATUS NTAPI KeRaiseUserException(_In_ NTSTATUS ExceptionCode)
VOID NTAPI KiDispatchException(IN PEXCEPTION_RECORD ExceptionRecord, IN PKEXCEPTION_FRAME ExceptionFrame, IN PKTRAP_FRAME TrapFrame, IN KPROCESSOR_MODE PreviousMode, IN BOOLEAN FirstChance)
VOID NTAPI KeInitExceptions(VOID)
struct tagContext Context
void __cdecl _disable(void)
#define RtlZeroMemory(Destination, Length)
#define RtlCopyMemory(Destination, Source, Length)
#define _SEH2_EXCEPT(...)
#define _SEH2_GetExceptionCode()
#define KeGetCurrentThread
#define SIZE_OF_80387_REGISTERS
ULONG NTAPI KiSsFromTrapFrame(IN PKTRAP_FRAME TrapFrame)
VOID NTAPI Ki386AdjustEsp0(IN PKTRAP_FRAME TrapFrame)
VOID NTAPI KeContextToTrapFrame(IN PCONTEXT Context, IN OUT PKEXCEPTION_FRAME ExceptionFrame, IN OUT PKTRAP_FRAME TrapFrame, IN ULONG ContextFlags, IN KPROCESSOR_MODE PreviousMode)
#define MAXIMUM_IDTVECTOR
#define KI_EXCEPTION_ACCESS_VIOLATION
VOID NTAPI KeBugCheckEx(_In_ ULONG BugCheckCode, _In_ ULONG_PTR BugCheckParameter1, _In_ ULONG_PTR BugCheckParameter2, _In_ ULONG_PTR BugCheckParameter3, _In_ ULONG_PTR BugCheckParameter4)
BOOLEAN FASTCALL KeInvalidAccessAllowed(IN PVOID TrapInformation OPTIONAL)
PULONG MinorVersion OPTIONAL