EXCEPTION_DISPOSITION _seh_exception_handler(PEXCEPTION_RECORD ExceptionRecord, void *EstablisherFrame, PCONTEXT ContextRecord, void *DispatcherContext) { EXCEPTION_POINTERS ExceptionInfo; ExceptionInfo.ExceptionRecord = ExceptionRecord; ExceptionInfo.ContextRecord = ContextRecord; return (EXCEPTION_DISPOSITION)_exception_handler(&ExceptionInfo,0); }
EXCEPTION_DISPOSITION _seh_exception_handler(PEXCEPTION_RECORD ExceptionRecord, void *EstablisherFrame, PCONTEXT ContextRecord, void *DispatcherContext) { EXCEPTION_POINTERS ExceptionInfo; ExceptionInfo.ExceptionRecord = ExceptionRecord; ExceptionInfo.ContextRecord = ContextRecord; EXCEPTION_DISPOSITION rval; switch (_exception_handler(&ExceptionInfo,1)) { case EXCEPTION_CONTINUE_EXECUTION: rval = ExceptionContinueExecution; break; case EXCEPTION_CONTINUE_SEARCH: rval = ExceptionContinueSearch; break; #ifndef _MSC_VER case EXCEPTION_EXECUTE_HANDLER: rval = ExceptionExecuteHandler; break; #endif } return rval; }
static LONG WINAPI exception_handler(struct _EXCEPTION_POINTERS *ExceptionInfo) { return _exception_handler(ExceptionInfo,1); }