小编Fil*_*lip的帖子

自定义SEH处理程序/ SAFESEH

我目前正在尝试用C++创建一个编译器,它在运行时生成机器代码.但是,我目前正在尝试启用安全异常处理(使用/ SAFESEH进行编译).我的自定义异常处理程序在调试模式下工作,但是当我在发布模式下运行相同的代码时,我的进程才被终止.

我很确定问题是我没有注册我的自定义异常处理程序,因为当我使用/ SAFESEH编译我的代码时:NO,即使在发布模式下一切正常.

我的自定义异常处理程序是用我的其他C++代码编写的,我试图通过将.asm文件添加到我的项目中来将其注册为异常处理程序:

.386
.model flat
_MyExceptionHandler@16 proto
.safeseh _MyExceptionHandler@16
end
Run Code Online (Sandbox Code Playgroud)

作为描述在这里.然后使用/ safeseh选项(以及其他)组装asm文件.

我的处理函数目前有以下声明:

extern "C" EXCEPTION_DISPOSITION __stdcall MyExceptionHandler(struct
_EXCEPTION_RECORD *ExceptionRecord, void * EstablisherFrame, struct 
_CONTEXT *ContextRecord, void * DispatcherContext);
Run Code Online (Sandbox Code Playgroud)

将此函数注册为异常处理程序的正确方法是什么?

谢谢你的任何建议!

c++ windows assembly visual-studio-2008

5
推荐指数
1
解决办法
1534
查看次数

标签 统计

assembly ×1

c++ ×1

visual-studio-2008 ×1

windows ×1