1 | /* $Id: except.h,v 1.1 1999-05-24 20:19:12 ktk Exp $ */
|
---|
2 |
|
---|
3 | /*
|
---|
4 | * except.h
|
---|
5 | * Copyright (c) 1996, Onno Hovers (onno@stack.urc.tue.nl)
|
---|
6 | */
|
---|
7 |
|
---|
8 | #ifndef __WINE_EXCEPT_H
|
---|
9 | #define __WINE_EXCEPT_H
|
---|
10 |
|
---|
11 | #include "winnt.h"
|
---|
12 |
|
---|
13 | /*
|
---|
14 | * the function pointer to a exception handler
|
---|
15 | */
|
---|
16 |
|
---|
17 | /* forward definition */
|
---|
18 | struct __EXCEPTION_FRAME;
|
---|
19 |
|
---|
20 | typedef DWORD (CALLBACK *PEXCEPTION_HANDLER)( PEXCEPTION_RECORD pexcrec,
|
---|
21 | struct __EXCEPTION_FRAME *pestframe,
|
---|
22 | PCONTEXT pcontext,
|
---|
23 | LPVOID pdispatcher);
|
---|
24 |
|
---|
25 | /*
|
---|
26 | * The exception frame, used for registering exception handlers
|
---|
27 | * Win32 cares only about this, but compilers generally emit
|
---|
28 | * larger exception frames for their own use.
|
---|
29 | */
|
---|
30 |
|
---|
31 | typedef struct __EXCEPTION_FRAME
|
---|
32 | {
|
---|
33 | struct __EXCEPTION_FRAME *Prev;
|
---|
34 | PEXCEPTION_HANDLER Handler;
|
---|
35 | } EXCEPTION_FRAME, *PEXCEPTION_FRAME;
|
---|
36 |
|
---|
37 |
|
---|
38 | /*
|
---|
39 | * this undocumented function is called when an exception
|
---|
40 | * handler wants all the frames to be unwound. RtlUnwind
|
---|
41 | * calls all exception handlers with the EH_UNWIND or
|
---|
42 | * EH_EXIT_UNWIND flags set in the exception record
|
---|
43 | *
|
---|
44 | * This prototype assumes RtlUnwind takes the same
|
---|
45 | * parameters as OS/2 2.0 DosUnwindException
|
---|
46 | * Disassembling RtlUnwind shows this is true, except for
|
---|
47 | * the TargetEIP parameter, which is unused. There is
|
---|
48 | * a fourth parameter, that is used as the eax in the
|
---|
49 | * context.
|
---|
50 | */
|
---|
51 | void WINAPI RtlUnwind( PEXCEPTION_FRAME pestframe,
|
---|
52 | LPVOID unusedEIP,
|
---|
53 | PEXCEPTION_RECORD pexcrec,
|
---|
54 | DWORD contextEAX );
|
---|
55 |
|
---|
56 | #endif /* __WINE_EXCEPT_H */
|
---|