windows-nt/Source/XPSP1/NT/base/mvdm/tools/c932/inc/except.h
2020-09-26 16:20:57 +08:00

140 lines
3.8 KiB
C

/***
*except.h - defines exception values, types and routines
*
* Copyright (c) 1990-1994, Microsoft Corporation. All rights reserved.
*
*Purpose:
* This file defines the exception values, types and declares the
* associated functions.
*
****/
#ifndef _INC_EXCEPT
#ifdef __cplusplus
extern "C" {
#endif
#if (_MSC_VER <= 600)
#define __cdecl _cdecl
#endif
/*
* exception codes defined by the host OS
*
* NOTE: THE UNDERSCORE PREFIX IN THE FOLLOWING NAMES WAS ADDED TO CONFORM
* WITH ANSI NAMESPACE REQUIREMENTS.
*/
#define _XCPT_GUARD_PAGE_VIOLATION 0x80000001
#define _XCPT_UNABLE_TO_GROW_STACK 0x80010001
#define _XCPT_DATATYPE_MISALIGNMENT 0xC000009E
#define _XCPT_BREAKPOINT 0xC000009F
#define _XCPT_SINGLESTEP 0xC00000A0
#define _XCPT_ACCESS_VIOLATION 0xC0000005
#define _XCPT_ILLEGAL_INSTRUCTION 0xC000001C
#define _XCPT_FLOATING_DENORMAL_OPERAND 0xC0000094
#define _XCPT_FLOATING_DIVIDE_BY_ZERO 0xC0000095
#define _XCPT_FLOATING_INEXACT_RESULT 0xC0000096
#define _XCPT_FLOATING_INVALID_OPERATION 0xC0000097
#define _XCPT_FLOATING_OVERFLOW 0xC0000098
#define _XCPT_FLOATING_STACK_CHECK 0xC0000099
#define _XCPT_FLOATING_UNDERFLOW 0xC000009A
#define _XCPT_INTEGER_DIVIDE_BY_ZERO 0xC000009B
#define _XCPT_INTEGER_OVERFLOW 0xC000009C
#define _XCPT_PRIVILEGED_INSTRUCTION 0xC000009D
#define _XCPT_IN_PAGE_ERROR 0xC0000006
#define _XCPT_PROCESS_TERMINATE 0xC0010001
#define _XCPT_ASYNC_PROCESS_TERMINATE 0xC0010002
#define _XCPT_NONCONTINUABLE_EXCEPTION 0xC0000024
#define _XCPT_INVALID_DISPOSITION 0xC0000025
#define _XCPT_INVALID_LOCK_SEQUENCE 0xC000001D
#define _XCPT_ARRAY_BOUNDS_EXCEEDED 0xC0000093
#define _XCPT_B1NPX_ERRATA_02 0xC0010004
#define _XCPT_UNWIND 0xC0000026
#define _XCPT_BAD_STACK 0xC0000027
#define _XCPT_INVALID_UNWIND_TARGET 0xC0000028
#define _XCPT_SIGNAL 0xC0010003
/*
* exception codes defined by the C runtime
*/
#define _XCPT_SIGABRT 0x20000001
#define _XCPT_SIGUSR1 0x20000002
#define _XCPT_SIGUSR2 0x20000003
#define _XCPT_SIGUSR3 0x20000004
#define _XCPT_FLOATING_EXPLICITGEN 0x20000005
/*
* constants, structs and types used in exception handling at the OS level
*
* NOTE: MANY OF IDENTIFIERS DEFINED BELOW ARE FROM DCR 1024. HOWEVER, THEY
* HAVE BEEN CHANGED TO CONFORM WITH ANSI NAMESPACE RESTRICTIONS.
*/
#define _EXCEPTION_MAXIMUM_PARAMETERS 4
struct __EXCEPTIONREPORTRECORD {
unsigned long ExceptionNum;
unsigned long fHandlerFlags;
struct __EXCEPTIONREPORTRECORD * NestedExceptionReportRecord;
void * ExceptionAddress;
unsigned long cParameters;
unsigned long ExceptionInfo[_EXCEPTION_MAXIMUM_PARAMETERS];
};
typedef struct __EXCEPTIONREPORTRECORD _EXCEPTIONREPORTRECORD;
typedef struct __EXCEPTIONREPORTRECORD * _PEXCEPTIONREPORTRECORD;
/*
* values of ExceptionInfo[0] for _XCPT_SIGNAL.
*/
#define _XCPT_SIGNAL_INTR 1 /* corresponds to SIGINT */
#define _XCPT_SIGNAL_KILLPROC 3 /* corresponds to SIGTERM */
#define _XCPT_SIGNAL_BREAK 4 /* corresponds to SIGBREAK */
/*
* NOTE: THE FOLLOWING DEFINITION FOR _PCONTEXTRECORD IS INCORRECT, BUT I
* DON'T ACTUALLY USE IT FOR ANYTHING AND REAL DEFINITION WOULD TAKE A GOOD
* TWO PAGES. SEE PAGES 16 AND 17 OF VOL1.TXT FOR THE CORRECT DEFINITION.
*/
typedef void * _PCONTEXTRECORD;
/*
* structure used by SEH support function and intrinsics. the information
* passed by the exception dispatcher is repackaged in this form by the
* runtime (_except_handler()).
*/
struct __EXCEPTION_INFO_PTRS {
_PEXCEPTIONREPORTRECORD preport;
_PCONTEXTRECORD pcontext;
};
typedef struct __EXCEPTION_INFO_PTRS * _PEXCEPTION_INFO_PTRS;
#ifndef _MAC_
/*
* prototypes for intrinsic SEH functions
*/
unsigned long __cdecl _exception_code(void);
void * __cdecl _exception_info(void);
int __cdecl _abnormal_termination(void);
#endif /* ndef _MAC_ */
#ifdef __cplusplus
}
#endif
#define _INC_EXCEPT
#endif /* _INC_EXCEPT */