1 #define WIN32_NO_STATUS
5 #include <ndk/umtypes.h>
6 #include <ndk/extypes.h>
7 #include <ndk/rtlfuncs.h>
13 _global_unwind2(PEXCEPTION_REGISTRATION_RECORD RegistrationFrame
)
16 RtlUnwind(RegistrationFrame
, &&__ret_label
, NULL
, 0);
18 // return is important
25 /* VC++ extensions to Win32 SEH */
26 typedef struct _SCOPETABLE
29 int (*lpfnFilter
)(PEXCEPTION_POINTERS
);
30 int (*lpfnHandler
)(void);
31 } SCOPETABLE
, *PSCOPETABLE
;
33 typedef struct _MSVCRT_EXCEPTION_FRAME
35 PEXCEPTION_REGISTRATION_RECORD
*prev
;
36 void (*handler
)(PEXCEPTION_RECORD
, PEXCEPTION_REGISTRATION_RECORD
,
37 PCONTEXT
, PEXCEPTION_RECORD
);
38 PSCOPETABLE scopetable
;
41 PEXCEPTION_POINTERS xpointers
;
42 } MSVCRT_EXCEPTION_FRAME
;
45 typedef struct __JUMP_BUFFER
53 unsigned long Registration
;
54 unsigned long TryLevel
;
55 /* Start of new struct members */
57 unsigned long UnwindFunc
;
58 unsigned long UnwindData
[6];
62 _local_unwind2(MSVCRT_EXCEPTION_FRAME
*RegistrationFrame
,
69 void __stdcall
_seh_longjmp_unwind(_JUMP_BUFFER
*jmp
)
71 _local_unwind2((MSVCRT_EXCEPTION_FRAME
*) jmp
->Registration
, jmp
->TryLevel
);