通过SEH处理访问冲突

时间:2013-06-06 15:08:54

标签: c++ windows memory-management seh

我创建了一个内存管理器,它分配了由两个页面保护的内存,并保护了PAGE_NOACCESS。 我在SEH块中调用一个使用此内存的函数,并捕获此块中发生的ACCESS_VIOLATION异常(如果有)。现在,在我的异常处理程序中,是否可以检索程序无权访问的地址?我知道你可以获得指向错误指令的指针,但是你必须实际解析程序集吗?

这是我知道违规是否是由我的保护内存引起的(我可以继续执行;这可能是预期的行为)或者是否是另一个(未知)地方,我可能不得不终止处理。 我考虑过使用PAGE_GUARD保护,这可以帮助我确定访问的内存可能来自我的保护内存,但不确定(即堆栈受到PAGE_GUARD afaik保护后的内存)。

任何帮助表示赞赏:)

1 个答案:

答案 0 :(得分:3)

根据the EXCEPTION_RECORD documentation,尝试的地址存储在ExceptionInformation[1]中。