码迷,mamicode.com
首页 > Windows程序 > 详细

Windows内核读书笔记——SEH结构化异常处理

时间:2016-04-12 00:07:43      阅读:238      评论:0      收藏:0      [点我收藏+]

标签:

SEH是对windows系统中的异常分发和处理机制的总称,其实现分布在很多不同的模块中。

SEH提供了终结处理异常处理两种功能。

终结处理保证终结处理块中的程序一定会被执行

1 __try
2 {
3 //要保护的代码
4 }
5 __finally
6 {
7 //终结处理块
8 }

退出保护块的方式:正常结束和非正常结束两种

1.正常结束

正常执行并顺序进入终结处理块称为正常结束

2.非正常结束

因为发生异常或是因为return、goto、break、continue等流程控制语句而离开被保护块的称为非正常结束

 

在终结处理块中使用AbnormalTermination获取被保护块的退出方式。

__leave关键字在被保护块中使用,立即结束被保护块。属于正常退出。

 

异常处理功能用于处理异常

1 __try
2 {
3 //被保护块
4 }
5 __except(过滤表达式)
6 {
7 //异常处理块
8 }

提供了两个宏,可在过滤表达式或异常处理块内使用

GetExceptionCode()返回异常代码

GetExceptionInformation()返回一个EXCEPTION_POINTERS结构中

1 typedef struct _EXCEPTION_POINTERS {
2   PEXCEPTION_RECORD ExceptionRecord;//异常记录指针
3   PCONTEXT          ContextRecord;//线程上下文指针
4 } EXCEPTION_POINTERS, *PEXCEPTION_POINTERS;

 过滤表达式可以是常量,函数调用也可以是条件表达式,但最后值必须是1、0、-1之一。

EXCEPTION_CONTINUE_SEARCH(0)本保护块不处理异常,系统继续搜索其他保护块

EXCEPTION_CONTINUE_EXECUTION(1)已经处理异常,程序回到异常点继续运行

EXCEPTION_EXECUTE_HANDLE(-1)让本保护块来处理这个

Windows内核读书笔记——SEH结构化异常处理

标签:

原文地址:http://www.cnblogs.com/Ox9A82/p/5380539.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!