景德镇市网站建设_网站建设公司_JavaScript_seo优化
2025/12/23 20:43:48 网站建设 项目流程

简单来说,Windows 为 32 位程序提供 32 位版本系统库和一个用于访问 64 位内核的转接层 WOW64 来确保兼容性。
32 位程序在 64 位系统上执行时像往常一样加载和调用 32 位版本系统库,只是对 32 位版本系统库的调用将在内部被通过 WOW64 转调至 64 位版本。 并且在访问特定注册表项和文件时,32 位程序会被重定向至 32 位版本的内容。这些机制对程序来说是无感的。

重定向机制:

  • 注册表重定向
    64 位系统会对 32 位程序的特定注册表访问实施重定向,以防止注册表冲突。 注册表重定向本质上是提供两份注册表项,一份供 64 位程序使用,另一份供 32 位程序使用。 不同 Windows 版本之间会重定向的注册表项可能是不同的 (LOCAL_MACHINE/Software 下的内容几乎总是被重定向)。 应用程序在访问注册表时可在 samDesired 参数中添加
    KEY_WOW64_64KEY 或 KEY_WOW64_32KEY 标识以访问指定版本的注册表。

  • 注册表反射
    一些注册表项的值在 32 位和 64 位注册表中是必须相同的。为了确保这一点,Windows 引入了注册表反射机制。 这些注册表项的值在被更改后将会同步至另一版本的注册表中。同步的时机点是注册表项被关闭(RegCloseKey)的那一刻。 应用程序可通过 RegEnableReflectionKeyRegDisableReflectionKey API 来启用/禁用注册表项的反射。

  • 文件重定向
    为了确保 32 位程序能够找到自己所需版本的系统文件,Windows 引入了该机制。 当 32 位程序在访问 System32 等目录时将会被重定向至相应的 SysWOW64 目录下。 应用程序可以通过 Wow64DisableWow64FsRedirection Wow64EnableWow64FsRedirectionWow64RevertWow64FsRedirection API 来避免被重定向。

额外补充:

  • WoW进程
    运行在 64 位系统上的 32 位程序被称为 WoW 进程。

  • 安腾处理器
    安腾处理器下,Windows 使用 8kb 页面模拟 32 位程序的 4kb 页面,这导致小部分相关 API 不可用。 并且如果同一个 32 位程序有多个实例同时运行,其会增加显著的虚拟内存开销。

  • 性能问题
    x86-64 架构处理器直接支持 x86 指令,因此 32 位程序执行速度与在 32 位系统上相似。而在安腾和 ARM64 处理器下,32 位程序性能会有受影响。


详细内容请参考文档系列:https://learn.microsoft.com/en-us/windows/win32/winprog64/running-32-bit-applications


--- 2020-‎3-‎26

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询