:
DWORD GetExceptionCode(VOID)
. GetExceptionCode ( ). , , , , :
__except(MyFilter(GetExceptionCode())) {
}
, , . , ; , , , (FP-, FloatingPoint ), ( EXCEPTION_CONTINUE_SEARCH), ( EXCEPTION_EXECUTE_HANDLER).
, GetExceptionCode, , .
, :
EXCEPTION_ACCESS_VIOLATION , .
EXCEPTION_DATATYPE_MISALIGNMENT , , DWORD .
EXCEPTION_NONCONTINUABLE_EXECUTION EXCEPTION_CONTINUE_EXECUTION, .
, Alloc HeapCreate, HEAP_GENERATE_EXCEPTIONS (. 5). STATUS_NO_MEMORY EXCEPTION_ACCESS_VIOLATION.
, RaiseException, ", ".
( FP-), , EXCEPTION_INT_DIVIDE_BY_ZERO EXCEPTION_FLT_OVERFLOW.
, , , EXCEPTION_BREAKPOINT EXCEPTION_SINGLE_STEP.
GetExceptionInformation, , , .
LPEXCEPTION_POINTERS GetExceptionINFORMATION(VOID)
, , , EXCEPTION_POINTERS, .
typedef struct _EXCEPTION_POINTERS {
|
|
PEXCEPTION_RECORD ExceptionRecord;
PCONTEXT ContextRecord;
} EXCEPTION POINTERS;
EXCEPTION_RECORD ExceptionCode, , GetExceptionCode. ExceptionFlags EXCEPTION_RECORD 0 EXCEPTION_NONCONTINUABLE, , . ExceptionAddress ExceptionInformation. EXCEPTION_ACCESS_VIOLATION , (1) (0). .
EXCEPTION_POINTERS, , ContextRecord, , . , <winnt.h>.
:
. 4.2 , . , , . :
1. ; .
2. , . GetExceptionCode, Filter.
3. , .
4. EXCEPTION_INT_DIVIDE_BY_ZERO.
5. , , EXCEPTION_EXECUTE_HANDLER.
6. , _except.
7. try except.
. 4.2.