首页
社区
课程
招聘
关于结构化异常,问一个问题[求助]
发表于: 2005-10-25 13:35 4661

关于结构化异常,问一个问题[求助]

2005-10-25 13:35
4661
结构化异常的处理函数声名如下:
EXCEPTION_DISPOSITION __cdecl _except_handler (
    struct _EXCEPTION_RECORD *ExceptionRecord,
    void * EstablisherFrame,
    struct _CONTEXT *ContextRecord,
    void * DispatcherContext
    );
谁能告诉我第四个参数“DispatcherContext”具体怎么用?

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 229
活跃值: (168)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
2
看雪精于此道,热心人请指点一下吧!
2005-10-26 17:05
0
雪    币: 442
活跃值: (1221)
能力值: ( LV12,RANK:1130 )
在线值:
发帖
回帖
粉丝
3
这个参数一般不被用到
2005-10-26 17:12
0
雪    币: 671
活跃值: (723)
能力值: ( LV9,RANK:1060 )
在线值:
发帖
回帖
粉丝
4
第四个参数DispatcherContext,它也是一个指针,表示调度的上下文环境,这个参数一般不被用到。
2005-10-26 17:31
0
雪    币: 229
活跃值: (168)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
5
多谢各位!
可是“调度的上下文环境”又是什么呢?
和ContextRecord不同在那里呢?
2005-10-27 10:58
0
雪    币: 671
活跃值: (723)
能力值: ( LV9,RANK:1060 )
在线值:
发帖
回帖
粉丝
6
最初由 hangj 发布
多谢各位!
可是“调度的上下文环境”又是什么呢?
和ContextRecord不同在那里呢?


第三个参数为指向CONTEXT数据结构的指针,CONTEXT数据结构体中记录了异常发生时,线程当时的上下文环境,主要包括寄存器的值。
2005-10-28 11:23
0
雪    币: 229
活跃值: (168)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
7
最初由 wenglingok 发布


第三个参数为指向CONTEXT数据结构的指针,CONTEXT数据结构体中记录了异常发生时,线程当时的上下文环境,主要包括寄存器的值。

"调度的上下文环境"与第三个参数有何不同?
第四个参数,也就是大家说一般不用的那个参数,倒底是干啥的?我还是不清楚,各位能否说的更明白一点!所谓帮人帮到底嘛!
2005-10-31 14:52
0
雪    币: 671
活跃值: (723)
能力值: ( LV9,RANK:1060 )
在线值:
发帖
回帖
粉丝
8
User code must not modify the DispatcherContext field at any time.

DispatcherContext (DISPATCHERCONTEXT) - output A pointer to a reserved
field that receives state information on nested exceptions and collided
unwinds. This field returns information to either the exception
dispatcher (in the case of nested exceptions) or to the unwind routine
(in the case of collided unwinds). User code must not modify the
DispatcherContext field at any time.

When the system's exception handler is called (it is already registered
by the exception dispatcher), the exception handler returns NESTED and
fills in the DispatcherContext field with the address of the
EXCEPTIONREGISTRATIONRECORD corresponding to the exception handler most
recently called by the exception dispatcher. This indicates how far the
exception dispatcher progressed through the call chain before the
nesting occurred. The EH_NESTED_CALL bit is set in the
EXCEPTIONREPORTRECORD flags field for each exception handler that is
called between handler of the exception dispatcher and the establisher
of the most recently called handler.

In the case of a collided unwind, the exception handler registered by
the unwind dispatcher will return COLLIDED_UNWIND and the
DispatcherContext field will contain a pointer to the target frame of
the current unwind.
2005-10-31 16:11
0
雪    币: 229
活跃值: (168)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
9
高人!万分感谢!
2005-11-1 09:17
0
游客
登录 | 注册 方可回帖
返回
//