配合使用 16 位应用程序和 32 位驱动程序

重要

Windows 的未来版本中将移除此功能。 请避免在新的开发工作中使用此功能,并计划修改当前使用此功能的应用程序。 请改用 32 位或 64 位驱动程序管理器。

只要 32 位驱动程序不显式调用创建线程的 Win32 API 函数,就可以在基于 Windows 的系统上运行具有 32 位驱动程序的 16 位应用程序。 Windows 上的 Windows (WOW) 子系统在 16 位模式下运行应用程序,并解析对操作系统的 16 位调用。 ODBC thunking DLL 将应用程序中的 16 位调用解析为 32 位驱动程序。 16 位应用程序使用 Windows API,32 位驱动程序使用 Win32 API。

体系结构

下图显示了 16 位应用程序与 32 位驱动程序通信的方式。 在 16 位驱动程序管理器和 32 位驱动程序之间是将 16 位 ODBC 调用转换为 32 位 ODBC 调用的泛型 thunking DLL。

How 16-bit apps communicate with 32-bit drivers

注意

每当 16 位应用程序与 32 位驱动程序交互时,32 位驱动程序管理器始终返回“2.0”作为驱动程序支持的 ODBC 版本。

管理

可以使用 ODBC 数据源管理员管理 32 位驱动程序的数据源。 若要在运行 Microsoft Windows 2000 的计算机上打开 ODBC 管理员istrator,请打开 Windows 控制面板,双击管理员istrative Tools,然后双击“数据源”(ODBC)。 在运行早期版本的 Microsoft Windows 的计算机上,该图标名为 32 位 ODBC 或简称 ODBC

下图显示了 16 位应用程序调用 32 位驱动程序设置 DLL的方式。 在 16 位安装程序 DLL 和 32 位驱动程序安装 DLL 之间是一个通用的 thunking DLL,其将 16 位安装程序 DLL 调用转换为 32 位安装程序 DLL 调用。

How a 16-bit app calls a 32-bit driver setup DLL

在 Windows 上的 Windows(16 位到 32 位的 thunking)中,另一个名为 Ds32gt.dll 的 thunking DLL 将通过 32 位设置 DLL 传递的 16 位参数值转换回 16 位。

组件

MDAC 2.8 SP1 SDK 的 ODBC 组件包含以下文件,用于运行具有 32 位驱动程序的 16 位应用程序。 这些组件位于 \Redist 目录中。

文件名 说明
Odbc16gt.dll 16 位 ODBC 泛型 thunking DLL
Odbc32gt.dll 32 位 ODBC 泛型 thunking DLL
Odbccp32.dll 32 位安装程序 DLL
Odbcad32.exe 32 位管理员程序
Odbcinst.hlp 安装程序帮助文件
Ds16gt.dll 16 位驱动程序设置泛型 thunking DLL
Ctl3d32.dll 32 位三维窗口样式库

此外,以下文件以及 16 位 ODBC 2.10 驱动程序管理器(不属于 ODBC 3.51)是 16 位应用程序所需的且应随 16 位应用程序一起安装。

文件名 说明
Odbc.dll 16 位驱动程序管理器
Odbcinst.dll 16 位安装程序 DLL
Odbcadm.exe 16 位 ODBC 管理员程序