WoW64

✍ dations ◷ 2025-08-28 20:10:15 #Windows NT,兼容层

WoW64(Windows 32-bit on Windows 64-bit)是Microsoft Windows操作系统的一个子系统,它提供在所有Windows 64位系统上运行32位应用程序的能力——这包括Windows XP Professional x64 Edition、IA-64和Windows Server 2003的64位版本,以及Windows Vista、Windows Server 2008、Windows 7、Windows 8、Windows Server 2012、Windows 8.1和Windows 10的64位版本。在Windows Server 2008 R2 Server Core中它成为了可选组件,并在Nano Server中不再提供。WoW64旨在解决32位与64位Windows中的许多差异,特别是涉及到Windows本身的结构变化。

WoW64子系统由一个轻量级兼容层组成,其在所有64位Windows版本上有类似的接口。它的目的是创建一个32位环境,为未修改的32位Windows应用程序在64位系统上运行提供一个必需的接口。在技术上,WoW64使用三个动态链接库(DLL)实现:

尽管表面上看它在所有64位Windows版本上都表现相同,但WoW64的实现取决于目标处理器架构。举例来说,面向Intel Itanium 2处理器(即IA-64架构)开发的64位Windows版本,会使用Wow64win.dll在Itanium 2的独有指令集中设置x86指令的仿真。这种仿真会比 Wow64win.dll的函数在x86-64架构(也称“Intel 64”或“AMD64”)上的计算代价更昂贵,因为当有必要执行32位线程时,处理器硬件必须从64位模式切换到兼容模式,然后再切换回64位模式。

WoW64子系统也处理其他运行32位应用程序所必需的关键问题。它参与32位应用程序与Windows组件的互动,例如注册表,64位与32位应用程序会使用不同的键。举例来说,HKEY_LOCAL_MACHINE\Software\Wow6432Node 是 HKEY_LOCAL_MACHINE\Software 的32位环境版本,并且32位应用程序不会感觉到这种重定向。有些注册表键是等效从64位映射到32位,还有些则是内容镜像,这取决于Windows的版本。

操作系统使用%SystemRoot%\system32目录放置其64位函数库和可执行文件。这样做的原因是考虑到向后兼容性,许多旧款程序采用硬编码使用该路径。当执行32位应用程序时,WoW64会将32位透明重定向到 %SystemRoot%\SysWoW64,那里放着32位函数库和可执行文件。32位应用程序不会知道自己在64位操作系统上运行。32位应用程序可以通过伪目录%SystemRoot%\sysnative访问真实的存有64位函数库和可执行文件的文件夹%SystemRoot%\System32

你会看到有两个Program Files目录可见,里面分别放着32位和64位应用程序。存储32位文件的目录名为 Program Files (x86) 以区分两者,而64位目录使用原有的 Program Files 为名,不附加任何限定名称。

只包含32位内核模式驱动程序,或者插入组件到仅64位实现的组件进程(例如Windows Explorer)的内存空间的32位应用程序不能在64位平台上执行。32位服务程序是支持的。SysWOW64文件夹位于操作系统所在分区的Windows文件夹,其包含许多支持32位应用程序的程序(例如cmd.exe、odbcad32.exe,为32位应用程序注册ODBC连接等)。面向MS-DOS和Windows早期版本的16位应用程序通常不兼容64位版本的Windows Vista、7和8,但可以通过Windows Virtual PC或DOSBox运行在16位或32位的Windows操作系统上。32位版本的Windows XP、Vista、7和8在另一方面通常也可以几乎无问题地运行16位应用程序。16位应用程序不能直接运行在x64版本的Windows上,因为CPU在x64模式下运行时不支持VM86。

Internet Explorer实现了32位与64位两个应用程序版本,因为互联网上有许多32位ActiveX组件,而它们不可能在64位版本上运行。Internet Explorer的32位版本被定为默认版本,并且64位版本不能被设置为默认浏览器。

WoW64 64位版本中透明层的一个程序错误导致所有依赖Windows API函数GetThreadContext的32位应用程序不兼容。此类应用包括应用程序调试器、调用堆栈跟踪器(例如IDE显示调用堆栈)和使用垃圾收集(GC)引擎的应用程序。受影响最广泛的一个GC引擎是Boehm GC,它被同样流行的Mono作为默认的垃圾收集引擎。虽然Mono截至2010年10月有一种新的、可选的GC(称作SGen-GC),但它与Boehm GC执行堆栈扫描的方式相同,因此它也不兼容WoW64。截至2010年11月15日,微软没有提供修复计划或变通解决方案。

据微软介绍,运行在WOW64下的32位软件与在32位Windows上的执行性能相近,但可能增加少许线程和其他开销。

一个32位应用程序在64位系统上可以完全使用4GB虚拟内存,而在32位系统上,部分可寻址内存无法使用,因为那会被内核和内存映射的外部设备(如显卡)使用。

相关

  • 三相点三相点是指在热力学里,使一种物质三相(气相、液相、固相)达到热力学平衡共存时的一组温度和压强数值。比如,水的固-液-气-三相点是0.01℃(273.16K)及611.73Pa (约等于标准大气压101
  • 炼油炼油厂是一个处理提炼石油的工厂,将原油精炼过后分为许多各有用途的石油产物,例如汽油、柴油等燃料和化工产品。炼油厂中根据不同的油品有不同的装置进行加工,其中有蒸馏装置,催
  • 游侠龙卷风《游侠龙卷风》是1986年2月22日至6月14日在台湾华视播出的特摄剧,共17集。紫微星君为了遵守和太阴星君(曾亚君 饰)的约定,下凡转世为牧童小龙(叶小益 饰),拥有与生俱来之法力的小龙
  • 鼻托鼻托另作鼻梁撑(英语:),是人们用于固定眼镜于鼻梁上的塑胶护垫,它是现代眼镜常见的部件之一,起到保持眼镜镜面与戴镜者眼睛距离的重要作用。鼻托多以透明或半透明的软塑胶材料制作
  • 丁以此丁以此(1846年-1921年),字竹筠,一字竹君,山东日照人,清朝文学家,丁惟汾之父。早年从学于许瀚入奎峰书院,后以教私塾谋生,以资助其子从事革命活动。著有《毛诗正韵》,深受章太炎、刘师培
  • 吉儿·塔特吉儿·康乃尔·塔特(Jill Cornell Tarter,1944年1月16日-)是一位美国女性天文学家和即将卸任的搜寻地外文明计划研究中心主任,并且在SETI协会(SETI Institute)担任伯纳德·奥利佛主
  • 鲍勃·考夫曼罗伯特·考夫曼(英语:Robert Kauffman,1946年7月13日-2015年7月27日),美国NBA联盟前职业篮球运动员。他在1968年的NBA选秀中第1轮第3顺位被西雅图超音速选中。
  • 黄炎生黄炎生(白话字:N̂g Iām-seng;1903年11月16日-1974年10月13日)是台湾首位任职法官的人物,台北州淡水郡淡水街(现新北市淡水区)出身,日治时代在日本内地和台湾担任法官,从六位。淡水公
  • 催泪电影催泪电影是指令人感动、煽人泪下的电影类型。爷们儿哭电影(Guy-cry film)是催泪电影的一个分支,指的是主要以男性为目标观众,并有强烈情绪元素的电影。运动电影可算是爷们儿哭电
  • 向步瀛向步瀛(1867年-1935年),字南皋,原名传薰,四川省成都府新繁县孝义桥人,其先自湖南武冈州迁入。父向凌奎曾任潼川府训导,光绪二十年(1894年)甲午科举人,戊戌科(1898年)年三甲进士,署理江