| /* | |
| * except.h | |
| * Copyright (c) 1996, Onno Hovers (onno@stack.urc.tue.nl) | |
| */ | |
| #ifndef __WINE_EXCEPT_H | |
| #define __WINE_EXCEPT_H | |
| #include "winnt.h" | |
| /* | |
| * the function pointer to a exception handler | |
| */ | |
| /* forward definition */ | |
| struct __EXCEPTION_FRAME; | |
| typedef DWORD (CALLBACK *PEXCEPTION_HANDLER)( PEXCEPTION_RECORD pexcrec, | |
| struct __EXCEPTION_FRAME *pestframe, | |
| PCONTEXT pcontext, | |
| LPVOID pdispatcher); | |
| /* | |
| * The exception frame, used for registering exception handlers | |
| * Win32 cares only about this, but compilers generally emit | |
| * larger exception frames for their own use. | |
| */ | |
| typedef struct __EXCEPTION_FRAME | |
| { | |
| struct __EXCEPTION_FRAME *Prev; | |
| PEXCEPTION_HANDLER Handler; | |
| } EXCEPTION_FRAME, *PEXCEPTION_FRAME; | |
| /* | |
| * this undocumented function is called when an exception | |
| * handler wants all the frames to be unwound. RtlUnwind | |
| * calls all exception handlers with the EH_UNWIND or | |
| * EH_EXIT_UNWIND flags set in the exception record | |
| * | |
| * This prototype assumes RtlUnwind takes the same | |
| * parameters as OS/2 2.0 DosUnwindException | |
| * Disassembling RtlUnwind shows this is true, except for | |
| * the TargetEIP parameter, which is unused. There is | |
| * a fourth parameter, that is used as the eax in the | |
| * context. | |
| */ | |
| void WINAPI RtlUnwind( PEXCEPTION_FRAME pestframe, | |
| LPVOID unusedEIP, | |
| PEXCEPTION_RECORD pexcrec, | |
| DWORD contextEAX ); | |
| #endif /* __WINE_EXCEPT_H */ |