34#define _SEH3$_FRAME_ALL_NONVOLATILES 1
40#define ASSERT(exp) if (!(exp)) __int2c();
56#ifdef _SEH3$_FRAME_ALL_NONVOLATILES
82 if (Frame->Handler !=
NULL)
85 ASSERT(Frame->EndOfChain == Frame);
91 if (Frame == CurrentFrame)
99 while (CurrentFrame->
Next != Frame)
101 CurrentFrame = CurrentFrame->
Next;
110 CurrentFrame = Frame->
Next;
113 CurrentFrame = CurrentFrame->
Next;
134 "xorl %%ecx, %%ecx\n\t"
135 "xorl %%eax, %%eax\n\t"
136 "call *%[Filter]\n\t"
141 "addl %[RegistrationFrame], %%eax\n\t"
146 :
"=a" (FilterResult)
147 : [RegistrationFrame]
"m" (RegistrationFrame), [
Filter]
"m" (
Filter)
155_SEH3$_InvokeEmbeddedFilter(
160_SEH3$_InvokeEmbeddedFilterFromRegistration(
179 return _SEH3$_InvokeEmbeddedFilter(RegistrationFrame);
183 return _SEH3$_InvokeEmbeddedFilterFromRegistration(RegistrationFrame);
199 _SEH3$_Unregister(Frame);
202 if (Frame->ScopeTable->Target ==
NULL)
214_SEH3$_CPP_AutoCleanup(
218 _SEH3$_UnregisterFrame(Frame);
220 _SEH3$_UnregisterTryLevel(Frame);
223 if (Frame->ScopeTable->Target ==
NULL)
275 "movl 24(%%ecx), %%esp\n\t"
276 "movl 28(%%ecx), %%ebp\n\t"
278 "movl 36(%%ecx), %%ebx\n\t"
279 "movl 40(%%ecx), %%esi\n\t"
280 "movl 44(%%ecx), %%edi\n\t"
288 "c" (RegistrationFrame),
295 "movl 24(%%ecx), %%esp\n\t"
296 "movl 28(%%ecx), %%ebp\n\t"
304 "c" (RegistrationFrame),
310 __builtin_unreachable();
324_SEH3$_common_except_handler(
336 asm volatile (
"cld" : : :
"memory");
379 CurrentFrame = CurrentFrame->
Next;
386 TargetFrame = CurrentFrame;
391 CurrentFrame != TargetFrame;
392 CurrentFrame = CurrentFrame->
Next)
395 _SEH3$_Unregister(CurrentFrame);
419 _SEH3$_Unregister(CurrentFrame);
422 _SEH3$_JumpToTarget(CurrentFrame);
ACPI_PHYSICAL_ADDRESS ACPI_SIZE BOOLEAN Warn UINT32 *TableIdx UINT32 ACPI_TABLE_HEADER *OutTableHeader ACPI_TABLE_HEADER **OutTable ACPI_HANDLE UINT32 ACPI_WALK_CALLBACK ACPI_WALK_CALLBACK void void **ReturnValue UINT32 ACPI_BUFFER *RetPathPtr ACPI_OBJECT_HANDLER void *Data ACPI_OBJECT_HANDLER void **Data ACPI_STRING ACPI_OBJECT_LIST ACPI_BUFFER *ReturnObjectBuffer ACPI_DEVICE_INFO **ReturnBuffer ACPI_HANDLE ACPI_HANDLE ACPI_HANDLE *OutHandle ACPI_HANDLE *OutHandle void *Context void *Context ACPI_EVENT_HANDLER Handler UINT32 UINT32 ACPI_GPE_HANDLER void *Context UINT32 HandlerType
ACPI_PHYSICAL_ADDRESS ACPI_SIZE BOOLEAN Warn UINT32 *TableIdx UINT32 ACPI_TABLE_HEADER *OutTableHeader ACPI_TABLE_HEADER **OutTable ACPI_HANDLE UINT32 ACPI_WALK_CALLBACK ACPI_WALK_CALLBACK void void **ReturnValue UINT32 ACPI_BUFFER *RetPathPtr ACPI_OBJECT_HANDLER Handler
_Inout_ PIRP _In_ NTSTATUS ExceptionCode
@ ExceptionContinueSearch
@ ExceptionContinueExecution
_Must_inspect_result_ _In_opt_ PFLT_FILTER Filter
#define EXCEPTION_EXECUTE_HANDLER
#define EXCEPTION_CONTINUE_SEARCH
#define EXCEPTION_CONTINUE_EXECUTION
HRESULT Next([in] ULONG celt, [out, size_is(celt), length_is(*pceltFetched)] STATPROPSETSTG *rgelt, [out] ULONG *pceltFetched)
PPC_QUAL void __writefsdword(const unsigned long Offset, const unsigned long Data)
PPC_QUAL unsigned long __readfsdword(const unsigned long Offset)
_IRQL_requires_same_ _In_ PVOID EstablisherFrame
_IRQL_requires_same_ _In_ PVOID _Inout_ struct _CONTEXT * ContextRecord
_IRQL_requires_same_ _In_ PVOID _Inout_ struct _CONTEXT _In_ PVOID DispatcherContext
int __cdecl _SEH3$_C_except_handler(struct _EXCEPTION_RECORD *ExceptionRecord, PSEH3$_REGISTRATION_FRAME EstablisherFrame, struct _CONTEXT *ContextRecord, void *DispatcherContext)
int __cdecl _SEH3$_CPP_except_handler(struct _EXCEPTION_RECORD *ExceptionRecord, PSEH3$_REGISTRATION_FRAME EstablisherFrame, struct _CONTEXT *ContextRecord, void *DispatcherContext)
void __fastcall _SEH3$_CallRtlUnwind(PSEH3$_REGISTRATION_FRAME RegistrationFrame)
static VOID _SEH3$_CallFinally(PSEH3$_REGISTRATION_FRAME Record, int HandlerType)
static LONG _SEH3$_GetFilterResult(PSEH3$_REGISTRATION_FRAME Record, int HandlerType)
static LONG _SEH3$_InvokeNestedFunctionFilter(volatile SEH3$_REGISTRATION_FRAME *RegistrationFrame, PVOID Filter)
int const SEH3$_SCOPE_TABLE void * AllocaFrame
int const SEH3$_SCOPE_TABLE * ScopeTable
#define SEH3_REGISTRATION_FRAME_AllocaFrame
#define SEH3_REGISTRATION_FRAME_ExceptionPointers
#define SEH3_SCOPE_TABLE_Target
#define SEH3_REGISTRATION_FRAME_Handler
#define SEH3_REGISTRATION_FRAME_Esp
#define SEH3_REGISTRATION_FRAME_EndOfChain
#define SEH3_REGISTRATION_FRAME_Ebp
#define SEH3_SCOPE_TABLE_Filter
#define SEH3_REGISTRATION_FRAME_TryLevel
#define SEH3_REGISTRATION_FRAME_Edi
#define SEH3_REGISTRATION_FRAME_Esi
#define SEH3_REGISTRATION_FRAME_ReturnAddress
#define SEH3_REGISTRATION_FRAME_Next
#define SEH3_REGISTRATION_FRAME_ScopeTable
#define SEH3_REGISTRATION_FRAME_Ebx
#define SEH3_REGISTRATION_FRAME_ExceptionCode
STDMETHOD() Next(THIS_ ULONG celt, IAssociationElement *pElement, ULONG *pceltFetched) PURE
struct _CONTEXT * ContextRecord
struct _EXCEPTION_RECORD * ExceptionRecord
PSEH3$_EXCEPTION_POINTERS volatile ExceptionPointers
struct _SEH3$_REGISTRATION_FRAME * EndOfChain
PSEH3$_SCOPE_TABLE ScopeTable
unsigned long ExceptionCode
struct _SEH3$_REGISTRATION_FRAME * Next
#define FIELD_OFFSET(t, f)
_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
_In_ struct _KBUGCHECK_REASON_CALLBACK_RECORD * Record
#define IS_UNWINDING(Flag)
#define EXCEPTION_UNWINDING