因此,我正在从C#代码的非托管.dll文件中调用函数。根据传递给该函数的参数,它可能会导致“运行时检查失败#0-ESP的值不正确”错误。这是该函数的完全正常行为(是的,我知道这听起来很奇怪,但是忍受我)。
但是,如果发生这种情况,我希望能够像处理异常一样处理它:正常地失败,向用户输出一条消息,并避免崩溃整个程序。
这可能吗?
最佳答案
如果使用GS标志,则可以通过调用函数__set_security_error_handler
来覆盖行为。这使您可以指定当GS标志和其他安全错误被触发时调用的函数。
我强烈建议不要这样做。任何定期破坏ESP的功能听起来都是一个真正的问题。您还可能通过覆盖此功能来隐藏其他实际的安全问题。
更好的解决方案是将单个方法标记为裸方法,并防止进行GS检查。
http://msdn.microsoft.com/en-us/library/h5w10wxs(VS.80).aspx
关于c# - 捕获“运行时检查失败#0-ESP的值不正确”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2353612/