Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

102 lines
3.0 KiB

;***
;exsup.inc
;
; Copyright (C) 1993-1997, Microsoft Corporation. All rights reserved.
;
;Purpose:
; Common data structures & definitions for exsup.asm and other
; Structured Exception Handling support modules.
;
;Revision History:
; 04-13-93 JWM Initial version
; 12-05-93 PML Update for C9.0
; 01-12-94 PML Move jmp_buf struct here, add new fields
; 01-13-95 JWM Added _NLG_INFO struct.
; 06-05-95 JWM Added uoffFramePointer to _NLG_INFO struct.
;
;******************************************************************************
;handler dispositions
DISPOSITION_DISMISS equ 0
DISPOSITION_CONTINUE_SEARCH equ 1
DISPOSITION_NESTED_EXCEPTION equ 2
DISPOSITION_COLLIDED_UNWIND equ 3
;filter return codes
FILTER_ACCEPT equ 1
FILTER_DISMISS equ -1
FILTER_CONTINUE_SEARCH equ 0
;handler flags settings..
EXCEPTION_UNWINDING equ 2
EXCEPTION_EXIT_UNWIND equ 4
EXCEPTION_UNWIND_CONTEXT equ EXCEPTION_UNWINDING OR EXCEPTION_EXIT_UNWIND
TRYLEVEL_NONE equ -1
TRYLEVEL_INVALID equ -2
;callback interface codes (mimimal required set)
CB_GET_MAX_CODE equ 0
CB_DO_LOCAL_UNWIND equ 1
CB_GET_FRAME_EBP equ 2
CB_GET_SCOPE_INDEX equ 3
CB_GET_SCOPE_DATA equ 4
MAX_CALLBACK_CODE equ 4
;typedef struct _EXCEPTION_REGISTRATION PEXCEPTION_REGISTRATION;
;struct _EXCEPTION_REGISTRATION{
; struct _EXCEPTION_REGISTRATION *prev;
; void (*handler)(PEXCEPTION_RECORD, PEXCEPTION_REGISTRATION, PCONTEXT, PEXCEPTION_RECORD);
; struct scopetable_entry *scopetable;
; int trylevel;
; int _ebp;
; PEXCEPTION_POINTERS xpointers;
;};
_EXCEPTION_REGISTRATION struc
prev dd ?
handler dd ?
_EXCEPTION_REGISTRATION ends
;setjmp/longjmp buffer
_JMP_BUF struc
saved_ebp dd ?
saved_ebx dd ?
saved_edi dd ?
saved_esi dd ?
saved_esp dd ?
saved_return dd ?
saved_xregistration dd ?
saved_trylevel dd ?
; following only found in C9.0 or later jmp_buf
version_cookie dd ?
unwind_func dd ?
unwind_data dd 6 dup(?)
_JMP_BUF ends
; Cookie placed in the jmp_buf to identify the new, longer form
JMPBUF_COOKIE equ 'VC20'
; Offset of TryLevel in a C8.0 SEH registration node
C8_TRYLEVEL equ 12
; NLG struct (debugging info)
;
; struct {
; unsigned long dwSig;
; unsigned long uoffDestination;
; unsigned long dwCode;
; unsigned long uoffFramePointer;
; } _NLG_Destination = {EH_MAGIC_NUMBER1,0,0,0};
;MAGIC_NUMBER1 equ 019930520h
;
;_NLG_INFO struc
; dwSig dd MAGIC_NUMBER1
; uoffDestination dd 0
; dwCode dd 0
; uoffFramePointer dd 0
;_NLG_INFO ends
; This constant is also defined in mtdll.h!
;_NLG_LOCK equ 01ah