ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

internal.h
Go to the documentation of this file.
00001 /*
00002     Copyright (c) 2004/2005 KJK::Hyperion
00003 
00004     Permission is hereby granted, free of charge, to any person obtaining a
00005     copy of this software and associated documentation files (the "Software"),
00006     to deal in the Software without restriction, including without limitation
00007     the rights to use, copy, modify, merge, publish, distribute, sublicense,
00008     and/or sell copies of the Software, and to permit persons to whom the
00009     Software is furnished to do so, subject to the following conditions:
00010 
00011     The above copyright notice and this permission notice shall be included in
00012     all copies or substantial portions of the Software.
00013 
00014     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
00015     IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
00016     FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
00017     AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
00018     LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
00019     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
00020     DEALINGS IN THE SOFTWARE.
00021 */
00022 
00023 #ifndef KJK_PSEH_FRAMEBASED_INTERNAL_H_
00024 #define KJK_PSEH_FRAMEBASED_INTERNAL_H_
00025 
00026 #define _SEH_DO_TRACE_ENTER_LEAVE      (1 <<  0)
00027 #define _SEH_DO_TRACE_EXCEPTION_RECORD (1 <<  1)
00028 #define _SEH_DO_TRACE_CONTEXT          (1 <<  2)
00029 #define _SEH_DO_TRACE_UNWIND           (1 <<  3)
00030 #define _SEH_DO_TRACE_TRYLEVEL         (1 <<  4)
00031 #define _SEH_DO_TRACE_CALL_FILTER      (1 <<  5)
00032 #define _SEH_DO_TRACE_FILTER           (1 <<  6)
00033 #define _SEH_DO_TRACE_CALL_HANDLER     (1 <<  7)
00034 #define _SEH_DO_TRACE_CALL_FINALLY     (1 <<  8)
00035 
00036 #define _SEH_DO_TRACE_NONE (0)
00037 #define _SEH_DO_TRACE_ALL (-1)
00038 
00039 #ifndef _SEH_DO_DEFAULT_TRACING
00040 #define _SEH_DO_DEFAULT_TRACING _SEH_DO_TRACE_NONE
00041 #endif
00042 
00043 struct _EXCEPTION_RECORD;
00044 struct _EXCEPTION_POINTERS;
00045 struct _CONTEXT;
00046 
00047 typedef int (__cdecl * _SEHFrameHandler_t)
00048 (
00049     struct _EXCEPTION_RECORD *,
00050     void *,
00051     struct _CONTEXT *,
00052     void *
00053 );
00054 
00055 typedef struct __SEHRegistration
00056 {
00057     struct __SEHRegistration * SER_Prev;
00058     _SEHFrameHandler_t SER_Handler;
00059 }
00060 _SEHRegistration_t;
00061 
00062 struct __SEHPortableFrame;
00063 struct __SEHPortableTryLevel;
00064 
00065 typedef long (__stdcall * _SEHFilter_t)
00066 (
00067     struct _EXCEPTION_POINTERS *,
00068     struct __SEHPortableFrame *
00069 );
00070 
00071 typedef void (__stdcall * _SEHHandler_t)
00072 (
00073     struct __SEHPortableTryLevel *
00074 );
00075 
00076 typedef void (__stdcall * _SEHFinally_t)
00077 (
00078     struct __SEHPortableFrame *
00079 );
00080 
00081 typedef struct __SEHHandlers
00082 {
00083     _SEHFilter_t SH_Filter;
00084     _SEHFinally_t SH_Finally;
00085 }
00086 _SEHHandlers_t;
00087 
00088 typedef struct __SEHPortableTryLevel
00089 {
00090     struct __SEHPortableTryLevel * volatile SPT_Next;
00091     volatile _SEHHandlers_t SPT_Handlers;
00092 }
00093 _SEHPortableTryLevel_t;
00094 
00095 typedef struct __SEHPortableFrame
00096 {
00097     _SEHRegistration_t SPF_Registration;
00098     unsigned long SPF_Code;
00099     volatile _SEHHandler_t SPF_Handler;
00100     _SEHPortableTryLevel_t * volatile SPF_TopTryLevel;
00101     volatile int SPF_Tracing;
00102 }
00103 _SEHPortableFrame_t;
00104 
00105 #ifdef __cplusplus
00106 extern "C"
00107 {
00108 #endif
00109 
00110 extern void __stdcall _SEHEnterFrame_s(_SEHPortableFrame_t *);
00111 extern void __stdcall _SEHLeaveFrame_s(void);
00112 extern void __stdcall _SEHReturn_s(void);
00113 
00114 #if !defined(_SEH_NO_FASTCALL)
00115 # ifdef _M_IX86
00116 #  define _SEH_FASTCALL __fastcall
00117 # else
00118 #  define _SEH_FASTCALL __stdcall
00119 # endif
00120 
00121 extern void _SEH_FASTCALL _SEHEnterFrame_f(_SEHPortableFrame_t *);
00122 extern void _SEH_FASTCALL _SEHLeaveFrame_f(void);
00123 extern void _SEH_FASTCALL _SEHReturn_f(void);
00124 
00125 # define _SEHEnterFrame _SEHEnterFrame_f
00126 # define _SEHLeaveFrame _SEHLeaveFrame_f
00127 # define _SEHReturn     _SEHReturn_f
00128 #else
00129 # define _SEHEnterFrame _SEHEnterFrame_s
00130 # define _SEHLeaveFrame _SEHLeaveFrame_s
00131 # define _SEHReturn     _SEHReturn_s
00132 #endif
00133 
00134 #ifdef __cplusplus
00135 }
00136 #endif
00137 
00138 #endif
00139 
00140 /* EOF */

Generated on Fri May 25 2012 04:17:27 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.