34 if (CallersAddress !=
NULL)
39 *CallersAddress = BackTrace[0];
43 *CallersAddress =
NULL;
48 if (CallersCaller !=
NULL)
53 *CallersCaller = BackTrace[1];
57 *CallersCaller =
NULL;
89 RegistrationFrame = RtlpGetExceptionList();
98 RegistrationFrameEnd = (
ULONG_PTR)RegistrationFrame +
102 if ((RegistrationFrameEnd > StackHigh) ||
103 ((
ULONG_PTR)RegistrationFrame < StackLow) ||
108 RegistrationFrameEnd,
132 sizeof(*RegistrationFrame));
135 Disposition = RtlpExecuteHandlerForException(ExceptionRecord,
139 RegistrationFrame->Handler);
142 if (RegistrationFrame == NestedFrame)
145 ExceptionRecord->ExceptionFlags &= ~EXCEPTION_NESTED_CALL;
218 RegistrationFrame = RegistrationFrame->Next;
248 if (!ExceptionRecord)
251 ExceptionRecord = &ExceptionRecord3;
282 Context->Esp +=
sizeof(TargetFrame) +
284 sizeof(ExceptionRecord) +
291 RegistrationFrame = RtlpGetExceptionList();
317 RegistrationFrameEnd = (
ULONG_PTR)RegistrationFrame +
321 if ((RegistrationFrameEnd > StackHigh) ||
322 ((
ULONG_PTR)RegistrationFrame < StackLow) ||
327 RegistrationFrameEnd,
351 RegistrationFrame->Handler);
383 OldFrame = RegistrationFrame;
384 RegistrationFrame = RegistrationFrame->
Next;
387 RtlpSetExceptionList(OldFrame);
UINT32 void void ** ReturnValue
VOID NTAPI RtlpCheckLogException(IN PEXCEPTION_RECORD ExceptionRecord, IN PCONTEXT ContextRecord, IN PVOID ContextData, IN ULONG Size)
BOOLEAN NTAPI RtlpHandleDpcStackException(IN PEXCEPTION_REGISTRATION_RECORD RegistrationFrame, IN ULONG_PTR RegistrationFrameEnd, IN OUT PULONG_PTR StackLow, IN OUT PULONG_PTR StackHigh)
VOID NTAPI RtlpGetStackLimits(OUT PULONG_PTR LowLimit, OUT PULONG_PTR HighLimit)
@ ExceptionContinueSearch
@ ExceptionCollidedUnwind
@ ExceptionNestedException
@ ExceptionContinueExecution
enum _EXCEPTION_DISPOSITION EXCEPTION_DISPOSITION
_In_ ULONG _Out_opt_ PULONG BackTraceHash
_In_ ACCESS_MASK _In_ POBJECT_ATTRIBUTES _Reserved_ ULONG _In_opt_ PUNICODE_STRING _In_ ULONG _Out_opt_ PULONG Disposition
NTSYSAPI NTSTATUS NTAPI ZwContinue(_In_ PCONTEXT Context, _In_ BOOLEAN TestAlert)
NTSYSAPI NTSTATUS NTAPI ZwRaiseException(_In_ PEXCEPTION_RECORD ExceptionRecord, _In_ PCONTEXT Context, _In_ BOOLEAN SearchFrames)
NTSYSAPI BOOLEAN NTAPI RtlDispatchException(_In_ PEXCEPTION_RECORD ExceptionRecord, _In_ PCONTEXT Context)
NTSYSAPI VOID NTAPI RtlRaiseException(_In_ PEXCEPTION_RECORD ExceptionRecord)
#define EXCEPTION_CHAIN_END
_IRQL_requires_same_ _In_ PVOID _Inout_ struct _CONTEXT _In_ PVOID DispatcherContext
VOID NTAPI RtlCallVectoredContinueHandlers(_In_ PEXCEPTION_RECORD ExceptionRecord, _In_ PCONTEXT Context)
BOOLEAN NTAPI RtlCallVectoredExceptionHandlers(_In_ PEXCEPTION_RECORD ExceptionRecord, _In_ PCONTEXT Context)
#define STATUS_INVALID_DISPOSITION
#define STATUS_NONCONTINUABLE_EXCEPTION
#define STATUS_INVALID_UNWIND_TARGET
VOID NTAPI RtlpCaptureContext(OUT PCONTEXT ContextRecord)
EXCEPTION_DISPOSITION NTAPI RtlpExecuteHandlerForUnwind(PEXCEPTION_RECORD ExceptionRecord, PEXCEPTION_REGISTRATION_RECORD RegistrationFrame, PCONTEXT Context, PVOID DispatcherContext, PEXCEPTION_ROUTINE ExceptionHandler)
VOID NTAPI RtlUnwind(_In_opt_ PVOID TargetFrame, _In_opt_ PVOID TargetIp, _In_opt_ PEXCEPTION_RECORD ExceptionRecord, _In_ PVOID ReturnValue)
VOID NTAPI RtlGetCallersAddress(_Out_ PVOID *CallersAddress, _Out_ PVOID *CallersCaller)
PULONG MinorVersion OPTIONAL
struct _EXCEPTION_RECORD * ExceptionRecord
struct _EXCEPTION_REGISTRATION_RECORD * Next
#define EXCEPTION_NONCONTINUABLE
NTSYSAPI USHORT NTAPI RtlCaptureStackBackTrace(_In_ ULONG FramesToSkip, _In_ ULONG FramesToCapture, _Out_writes_to_(FramesToCapture, return) PVOID *BackTrace, _Out_opt_ PULONG BackTraceHash)
#define EXCEPTION_EXIT_UNWIND
#define EXCEPTION_NESTED_CALL
#define EXCEPTION_STACK_INVALID
#define EXCEPTION_UNWINDING