winapi - Oracle OCI 函数 orlon 调用 SetUnhandledExceptionFilter

标签 winapi oracle-call-interface

我一直在使用一个旧的 Win32 应用程序,该应用程序使用 OCI(Oracle 调用接口(interface))连接到 Oracle 数据库。应用程序调用 SetUnhandledExceptionFilter() 来捕获(除其他外)访问违规(异常代码 0xC0000005)。

但是,一旦应用程序使用 OCI 函数 orlon() 登录到 Oracle,已安装的异常过滤器就会被 OCI 库覆盖,这意味着过滤器不再捕获异常最初安装的应用程序。这已使用调试器和检查已安装异常过滤器的函数指针值进行了验证。

有人知道为什么 OCI 函数 orlon() 调用 SetUnhandledExceptionFilter() 以及如何禁用此行为吗?

最佳答案

似乎 OCI/Oracle 默认安装信号处理程序 (*nix) 和异常过滤器 (Windows) 来处理段错误 (*nix)、访问冲突 (Windows) 等事件,以便记录诊断。 documentation描述了报告事件的位置以及如何使用 Oracle 实用程序 adrci 检查这些事件。

设置

DIAG_SIGHANDLER_ENABLED=FALSE

在配置文件sqlnet.ora中禁用OCI信号处理程序/异常过滤器并重新启用标准操作系统故障处理。

关于winapi - Oracle OCI 函数 orlon 调用 SetUnhandledExceptionFilter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23570135/

相关文章:

jdbc - OCI JDBC 驱动程序和 NLS 设置

c# - 在第三方应用程序中创建窗口作为子窗口

winapi - C++ Win32 PostQuitMessage(0) 不工作? CPU @ 100%

php - oci_bind_by_name 和 to_date PHP/OCI/Oracle

PHP 错误 : Warning: ociparse() parameter 1 to be resource

PHP OCI8 扩展不适用于 PHP 7 64 位

Oracle OCI 连接池与 Oracle UCP

c++ - 我的 WIN32 API 对话框不显示 - C++

.net - 如何重新加载经常崩溃的第 3 方 DLL

c - 读取和处理 windows 32 位系统串行数据的最简单方法是什么?