異常的分發和處理時在線程范圍內進行的
可以手工編寫代碼來登記和注銷異常處理器
注冊FS
#include
#include <windows
// 定義一個符合sehHandler原型的異常處理函數
// 除零異常
// 導致異常的代碼
EXCEPTION_DISPOSITION __cdecl _raw_seh_handler( struct _EXCEPTION_RECORD *ExceptionRecord
void * EstablisherFrame
struct _CONTEXT * ContexRecord
void * DispacherContext
)
{
printf(
ExceptionRecord
ExceptionRecord
if(ExceptionRecord
{
ContexRecord
return ExceptionContinueExecution
}
return ExceptionContinueSearch
}
int main(int argc
{
__asm
{
// 手工方法將異常函數注冊到FS
push OFFSET _raw_seh_handler
push FS
mov FS
// 執行除零異常
xor edx
mov eax
xor ecx
idiv ecx
mov eax
mov FS
add esp
}
printf(
return
}
From:http://tw.wingwit.com/Article/os/xtgl/201311/8664.html