0

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

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

任何帮助表示赞赏:)

4

1 回答 1

4

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

于 2013-06-06T15:23:55.663 回答