32 位和 64 位 WIA 互操作性

在运行适用于扩展处理器的 Windows 64 位版本的系统上,所有 WIA 组件都是 64 位的,因此 WIA 基础结构已更改为允许这些 64 位驱动程序与现有 32 位应用程序之间的互操作性。

在 64 位版本的 Windows 操作系统上,64 位 WIA 微型驱动程序将加载到 WIA 服务的 64 位进程中。 但是,WIA 微型驱动程序 UI 扩展将加载到应用程序的进程空间中。 在基于 x64 的计算机上运行的 Microsoft Win32 应用程序的未修改 32 位进程将无法加载 64 位 UI 扩展。

为了缓解 32 位到 64 位的问题,Microsoft 提供了一个 64 位扩展主机 ,wiawow64.exe。 此主机可确保 32 位应用程序和 64 位 WIA UI 扩展之间的透明互操作性。 wiawow64.exe扩展主机将在适用于扩展处理器的 Windows Server 2003 64 位版本、适用于扩展处理器的 Windows XP 64 位版本、Windows Vista 及更高操作系统版本中提供。

WIA 服务将确定 UI 扩展的物理加载位置,具体取决于应用程序是 64 位还是 32 位:

  • 64 位应用程序。 64 位 WIA 微型驱动程序 UI 扩展直接加载到应用程序的进程空间中。 这类似于在 32 位版本的 Windows 操作系统上运行 32 位应用程序时发生的情况。

  • 32 位应用程序。 WIA 启动 UI 扩展将加载到 的wiawow64.exe 扩展主机。 每次从 32 位应用程序调用任何接口方法时,都会创建并启动一个单独的 wiawow64.exe 实例。 wiawow64.exe主机在与应用程序相同的上下文中运行,并通过现有的 COM 接口与应用程序通信。

尽管 wiawow64.exe 对 WIA 应用程序编写者和 WIA 驱动程序开发人员都是完全透明的,但驱动程序开发人员必须调试 wiawow64.exe 进程,而不是 32 位应用程序来调试 64 位 UI 扩展。