diff --git a/reactos/include/reactos/libs/pseh/pseh2.h b/reactos/include/reactos/libs/pseh/pseh2.h index 9c10af5c95d..ce1326e9ae0 100644 --- a/reactos/include/reactos/libs/pseh/pseh2.h +++ b/reactos/include/reactos/libs/pseh/pseh2.h @@ -19,6 +19,9 @@ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +#ifdef _M_AMD64 +#include "pseh2_64.h" +#else #ifndef KJK_PSEH2_H_ #define KJK_PSEH2_H_ @@ -400,6 +403,7 @@ __SEH_END_SCOPE_CHAIN; #endif +#endif #endif /* EOF */ diff --git a/reactos/include/reactos/libs/pseh/pseh2_64.h b/reactos/include/reactos/libs/pseh/pseh2_64.h new file mode 100644 index 00000000000..fd582a1e1f3 --- /dev/null +++ b/reactos/include/reactos/libs/pseh/pseh2_64.h @@ -0,0 +1,37 @@ +#ifndef KJK_PSEH2_H_ +#define KJK_PSEH2_H_ + + +#define _SEH2_TRY if(1) { +#define _SEH2_EXCEPT(...) } if(0) { +#define _SEH2_END } +#define _SEH2_YIELD(STMT_) STMT_ +#define _SEH2_LEAVE +#define _SEH2_FINALLY } if(1) { +#define _SEH2_GetExceptionInformation() (GetExceptionInformation()) +#define _SEH2_GetExceptionCode() (0) +#define _SEH2_AbnormalTermination() (0) + +struct _EXCEPTION_RECORD; +struct _EXCEPTION_POINTERS; +struct _CONTEXT; + +typedef int (__cdecl * _SEH2FrameHandler_t) +( + struct _EXCEPTION_RECORD *, + void *, + struct _CONTEXT *, + void * +); + +typedef struct __SEH2Registration +{ + struct __SEH2Registration * SER_Prev; + _SEH2FrameHandler_t SER_Handler; +} +_SEH2Registration_t; + + +#endif + +/* EOF */