当前位置: 首页 > news >正文

64 位 Windows 对 32 位程序的兼容处理

简单来说,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
http://www.jsqmd.com/news/130535/

相关文章:

  • 国产CAD实现跨部门设计变更同步
  • 隧道代理在数据挖掘中的实战应用:从原理到落地的全流程解析
  • 全面掌握AI大模型:从零基础入门到实战应用的七阶段学习路线图全攻略!
  • AI 原生应用开发框架深度解析:从单智能体到多智能体协同开发 - 2
  • 如何安全地清洁 Windows 10/11 PC 上的 SS
  • 请编写一个 Bash 脚本检查系统中的所有服务状态(中等)
  • Python Threading.Lock() threading.thread(target=lambda:[()])
  • 光储(VSG)并网系统:超级电容储能的魅力
  • 如何彻底擦除电脑(4种有效方法)
  • 5G布控球 5g布控球
  • 2023A卷,天然蓄水池
  • Alibaba Cloud Linux 4.0安装mongodump
  • 2025年中国电缆十大品牌推荐认证!中国电缆一线品牌推荐:缆标杆品牌推荐TOP榜单(12月新) - 品牌2026
  • 光储交直流微电网离并网变换仿真探秘
  • 苹果明年将推出20多款新品,重磅产品抢先看
  • 数据里的“平行宇宙”:用分支管理实现数据的版本控制
  • Web自动化测试框架
  • P11398 众数
  • 探索Maxwell外转子电机设计与电磁仿真
  • 【必学收藏】一文掌握RAG分块新范式:Max-Min语义分块技术深度解析
  • Kafka 与 Spark 在大数据实时分析中的集成
  • SMT贴片加工生产车间主要设备有哪些
  • SGMICRO圣邦微 SGM2034-5.0YN3G/TR SOT23 线性稳压器(LDO)
  • Jmeter 性能-需求分析业务/场景设计
  • JavaScript 性能优化:7 个 V8 引擎偏爱的编码模式让你提速 40%
  • 一篇了解自动化测试
  • mongodb备份的脚本
  • 软件测试:如何进行微服务测试?
  • 必看!青年拔尖人才支持计划项目优化申报策略与重要注意事项
  • SGMICRO圣邦微 SGM2036-1.1YN5G/TR SOT23-5 线性稳压器(LDO)