singrdk/base/Windows/Inc/excpt.h

136 lines
3.0 KiB
C

/***
*excpt.h - defines exception values, types and routines
*
* Copyright (c) Microsoft Corporation. All rights reserved.
*
*Purpose:
* This file contains the definitions and prototypes for the compiler-
* dependent intrinsics, support functions and keywords which implement
* the structured exception handling extensions.
*
* [Public]
*
****/
#if _MSC_VER > 1000
#pragma once
#endif
#ifndef _INC_EXCPT
#define _INC_EXCPT
#include <crtdefs.h>
#ifdef _MSC_VER
/*
* Currently, all MS C compilers for Win32 platforms default to 8 byte
* alignment.
*/
#pragma pack(push,_CRT_PACKING)
#endif /* _MSC_VER */
#ifdef __cplusplus
extern "C" {
#endif
/*
* Exception disposition return values.
*/
typedef enum _EXCEPTION_DISPOSITION {
ExceptionContinueExecution,
ExceptionContinueSearch,
ExceptionNestedException,
ExceptionCollidedUnwind
} EXCEPTION_DISPOSITION;
/*
* Prototype for SEH support function.
*/
#ifdef _M_IX86
/*
* Declarations to keep MS C 8 (386/486) compiler happy
*/
struct _EXCEPTION_RECORD;
struct _CONTEXT;
EXCEPTION_DISPOSITION __cdecl _except_handler (
__in struct _EXCEPTION_RECORD *_ExceptionRecord,
__in void * _EstablisherFrame,
__inout struct _CONTEXT *_ContextRecord,
__inout void * _DispatcherContext
);
#elif defined(_M_IA64)
/*
* Declarations to keep IA64 compiler happy
*/
typedef struct _EXCEPTION_POINTERS *Exception_info_ptr;
struct _EXCEPTION_RECORD;
struct _CONTEXT;
struct _DISPATCHER_CONTEXT;
_CRTIMP EXCEPTION_DISPOSITION __cdecl __C_specific_handler (
__in struct _EXCEPTION_RECORD *_ExceptionRecord,
__in unsigned __int64 _MemoryStackFp,
__in unsigned __int64 _BackingStoreFp,
__inout struct _CONTEXT *_ContextRecord,
__inout struct _DISPATCHER_CONTEXT *_DispatcherContext,
__in unsigned __int64 _GlobalPointer
);
#elif defined(_M_AMD64)
/*
* Declarations to keep AMD64 compiler happy
*/
struct _EXCEPTION_RECORD;
struct _CONTEXT;
#endif
/*
* Keywords and intrinsics for SEH
*/
#ifdef _MSC_VER
#define GetExceptionCode _exception_code
#define exception_code _exception_code
#define GetExceptionInformation (struct _EXCEPTION_POINTERS *)_exception_info
#define exception_info (struct _EXCEPTION_POINTERS *)_exception_info
#define AbnormalTermination _abnormal_termination
#define abnormal_termination _abnormal_termination
unsigned long __cdecl _exception_code(void);
void * __cdecl _exception_info(void);
int __cdecl _abnormal_termination(void);
#endif
/*
* Legal values for expression in except().
*/
#define EXCEPTION_EXECUTE_HANDLER 1
#define EXCEPTION_CONTINUE_SEARCH 0
#define EXCEPTION_CONTINUE_EXECUTION -1
#ifdef __cplusplus
}
#endif
#ifdef _MSC_VER
#pragma pack(pop)
#endif /* _MSC_VER */
#endif /* _INC_EXCPT */