69{
76
77
79 {
80
82
83
85 }
86
87
89 RegistrationFrame = RtlpGetExceptionList();
90
91
93 {
94
96
97
98 RegistrationFrameEnd = (
ULONG_PTR)RegistrationFrame +
100
101
102 if ((RegistrationFrameEnd > StackHigh) ||
103 ((
ULONG_PTR)RegistrationFrame < StackLow) ||
105 {
106
108 RegistrationFrameEnd,
109 &StackLow,
110 &StackHigh))
111 {
112
113 continue;
114 }
115
116
119 }
120
121
122
123
124
125
126
127
128
131 RegistrationFrame,
132 sizeof(*RegistrationFrame));
133
134
135 Disposition = RtlpExecuteHandlerForException(ExceptionRecord,
136 RegistrationFrame,
139 RegistrationFrame->Handler);
140
141
142 if (RegistrationFrame == NestedFrame)
143 {
144
145 ExceptionRecord->ExceptionFlags &= ~EXCEPTION_NESTED_CALL;
147 }
148
149
151 {
152
154 {
155
157 {
158
164
165
167 }
168 else
169 {
170
172
173
175 }
176 }
177
178
181 {
182
184 }
185 break;
186
187
189 {
190
192
193
195 {
196
198 }
199 break;
200 }
201
202
203 default:
204 {
205
210
211
213 break;
214 }
215 }
216
217
218 RegistrationFrame = RegistrationFrame->Next;
219 }
220
221
223}
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
@ ExceptionNestedException
@ ExceptionContinueExecution
enum _EXCEPTION_DISPOSITION EXCEPTION_DISPOSITION
_In_ ACCESS_MASK _In_ POBJECT_ATTRIBUTES _Reserved_ ULONG _In_opt_ PUNICODE_STRING _In_ ULONG _Out_opt_ PULONG Disposition
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
struct _EXCEPTION_RECORD * ExceptionRecord
#define EXCEPTION_NONCONTINUABLE
#define EXCEPTION_NESTED_CALL
#define EXCEPTION_STACK_INVALID