64 for (
j =
i = 0;
i < 256;
i++)
113 ExceptionRecord = &LocalExceptRecord;
159 TrapFrame->Rsp = UserRsp;
182 volatile CHAR *Pointer;
187 if (!Pointer)
return;
223 ListEntry = ListEntry->
Flink)
269 switch (ExceptionRecord->ExceptionCode)
326 ExceptionRecord->ExceptionCode,
327 (
ULONG_PTR)ExceptionRecord->ExceptionAddress,
383 DPRINT1(
"Kill %.16s, ExceptionCode: %lx, ExceptionAddress: %lx, BaseAddress: %lx\n",
385 ExceptionRecord->ExceptionCode,
386 ExceptionRecord->ExceptionAddress,
391 ExceptionRecord->ExceptionCode,
392 (
ULONG_PTR)ExceptionRecord->ExceptionAddress,
447 for (
i = 0;
i < 15;
i++)
452 if ((Ip[0] >= 0x40) && (Ip[0] <= 0x4F))
516 switch ((Ip[2] >> 3) & 0x7)
541 switch ((Ip[2] >> 3) & 0x7)
566 switch ((Ip[2] >> 3) & 0x7)
589 PUCHAR InstructionPointer;
593 InstructionPointer = (
PUCHAR)TrapFrame->Rip;
627 if (TrapFrame->SegCs & 3)
647 Instructions = (
PUCHAR)TrapFrame->Rip;
650 if (Instructions[0] == 0x48 && Instructions[1] == 0xCF)
658 if ((Instructions[0] == 0xF) &&
659 ((Instructions[1] == 0x30) ||
660 (Instructions[1] == 0x32)))
VOID NTAPI KeContextToTrapFrame(PCONTEXT Context, PKEXCEPTION_FRAME ExeptionFrame, PKTRAP_FRAME TrapFrame, ULONG ContextFlags, KPROCESSOR_MODE PreviousMode)
VOID KiSegmentNotPresentFault(VOID)
_Inout_ PIRP _In_ NTSTATUS ExceptionCode
#define TYPE_ALIGNMENT(t)
PPEB ProcessEnvironmentBlock
struct png_info_def **typedef void(__cdecl typeof(png_destroy_read_struct))(struct png_struct_def **
struct _KUSER_EXCEPTION_STACK * PKUSER_EXCEPTION_STACK
PKDEBUG_ROUTINE KiDebugRoutine
VOID KiGeneralProtectionFault(VOID)
LIST_ENTRY InLoadOrderModuleList
VOID KiDivideErrorFault(VOID)
void __cdecl _enable(void)
FORCEINLINE struct _KPRCB * KeGetCurrentPrcb(VOID)
static NTSTATUS KiGeneralProtectionFaultUserMode(_In_ PKTRAP_FRAME TrapFrame)
VOID KiInvalidOpcodeFault(VOID)
IN PVOID IN PVOID IN USHORT IN USHORT Size
__INTRIN_INLINE void __lidt(void *Source)
VOID KiDebugTrapOrFault(VOID)
VOID DECLSPEC_NORETURN KiSystemFatalException(IN ULONG ExceptionCode, IN PKTRAP_FRAME TrapFrame)
#define DECLSPEC_NORETURN
VOID NTAPI ProbeForWrite(IN PVOID Address, IN SIZE_T Length, IN ULONG Alignment)
static VOID KiDispatchExceptionToUser(IN PKTRAP_FRAME TrapFrame, IN PCONTEXT Context, IN PEXCEPTION_RECORD ExceptionRecord)
VOID KiPrepareUserDebugData(void)
MACHINE_FRAME MachineFrame
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
VOID KiApcInterrupt(VOID)
EXCEPTION_RECORD ExceptionRecord
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 STATUS_BREAKPOINT
VOID KiNpxSegmentOverrunAbort(VOID)
VOID KiIpiInterrupt(VOID)
VOID NTAPI KeTrapFrameToContext(IN PKTRAP_FRAME TrapFrame, IN PKEXCEPTION_FRAME ExceptionFrame, IN OUT PCONTEXT Context)
VOID KiDoubleFaultAbort(VOID)
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
#define NtCurrentProcess()
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 GLint GLint j
BOOLEAN KdIgnoreUmExceptions
struct _LIST_ENTRY * Flink
_In_ KPROCESSOR_MODE PreviousMode
VOID KiNmiInterrupt(VOID)
BOOLEAN NTAPI DbgkForwardException(IN PEXCEPTION_RECORD ExceptionRecord, IN BOOLEAN DebugPort, IN BOOLEAN SecondChance)
#define EXCEPTION_EXECUTE_HANDLER
VOID KiInvalidTssFault(VOID)
BOOLEAN NTAPI KdIsThisAKdTrap(IN PEXCEPTION_RECORD ExceptionRecord, IN PCONTEXT Context, IN KPROCESSOR_MODE PreviousMode)
#define STATUS_UNSUCCESSFUL
PVOID KeUserExceptionDispatcher
VOID KiNpxNotAvailableFault(VOID)
VOID NTAPI ProbeForRead(IN CONST VOID *Address, IN SIZE_T Length, IN ULONG Alignment)
VOID KiDpcInterrupt(VOID)
#define RtlImageDirectoryEntryToData
#define STATUS_PRIVILEGED_INSTRUCTION
KI_INTERRUPT_DISPATCH_ENTRY KiUnexpectedRange[256]
VOID KiXmmException(VOID)
KIDT_INIT KiInterruptInitTable[]
static BOOLEAN KiIsPrivilegedInstruction(PUCHAR Ip, BOOLEAN Wow64)
KDESCRIPTOR KiIdtDescriptor
_In_ ULONG _In_ ULONG Offset
NTSTATUS NTAPI KeRaiseUserException(IN NTSTATUS ExceptionCode)
NTSTATUS NTAPI KiGeneralProtectionFaultHandler(IN PKTRAP_FRAME TrapFrame)
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
#define IMAGE_DIRECTORY_ENTRY_DEBUG
VOID KiAlignmentFault(VOID)
static VOID KiPageInDirectory(PVOID ImageBase, USHORT Directory)
VOID KiBreakpointTrap(VOID)
VOID KiFloatingErrorFault(VOID)
struct _KUSER_EXCEPTION_STACK KUSER_EXCEPTION_STACK
struct tagContext Context
VOID NTAPI KiDispatchException(IN PEXCEPTION_RECORD ExceptionRecord, IN PKEXCEPTION_FRAME ExceptionFrame, IN PKTRAP_FRAME TrapFrame, IN KPROCESSOR_MODE PreviousMode, IN BOOLEAN FirstChance)
void __cdecl _disable(void)
NTSTATUS NTAPI KiXmmExceptionHandler(IN PKTRAP_FRAME TrapFrame)
BOOLEAN NTAPI RtlDispatchException(_In_ PEXCEPTION_RECORD ExceptionRecord, _In_ PCONTEXT ContextRecord)
base for all directory entries
#define RtlZeroMemory(Destination, Length)
VOID KiDebugServiceTrap(VOID)
#define _SEH2_EXCEPT(...)
#define _SEH2_GetExceptionCode()
#define _SEH2_YIELD(__stmt)
#define KeGetCurrentThread
VOID KiOverflowTrap(VOID)
VOID KiRaiseAssertion(VOID)
VOID NTAPI KeInitExceptions(VOID)
#define KI_EXCEPTION_ACCESS_VIOLATION
#define IMAGE_DIRECTORY_ENTRY_EXCEPTION
VOID NTAPI KeBugCheckEx(_In_ ULONG BugCheckCode, _In_ ULONG_PTR BugCheckParameter1, _In_ ULONG_PTR BugCheckParameter2, _In_ ULONG_PTR BugCheckParameter3, _In_ ULONG_PTR BugCheckParameter4)
NTSTATUS NTAPI KiNpxNotAvailableFaultHandler(IN PKTRAP_FRAME TrapFrame)
_In_ PKSERVICE_ROUTINE ServiceRoutine