fbpx
Wikipedia

WoW64

In computing on Microsoft platforms, WoW64 (Windows 32-bit on Windows 64-bit) is a subsystem of the Windows operating system capable of running 32-bit applications on 64-bit Windows.[1] It is included in all 64-bit versions of Windows—including Windows XP Professional x64 Edition, IA-64 and x64 versions of Windows Server 2003, as well as x64 versions of Windows Vista, Windows Server 2008, Windows 7, Windows 8, Windows Server 2012, Windows 8.1, Windows 10, Windows Server 2016, Windows Server 2019, Windows 11, Windows Server 2022, and Wine.[2] as well as ARM64 versions of Windows 10, Windows 11 and Windows Server 2022, except in Windows Server Server Core where it is an optional component, and Windows Nano Server where it is not included. WoW64 aims to take care of many of the differences between 32-bit Windows and 64-bit Windows, particularly involving structural changes to Windows itself.

WoW64
Other namesWindows 32-bit on Windows 64-bit
Developer(s)Microsoft
Initial releaseOctober 25, 2001; 21 years ago (2001-10-25)
Operating systemMicrosoft Windows
PlatformIA-64, x86-64, ARM64
TypeCompatibility layer
LicenseProprietary commercial software
Websitedocs.microsoft.com/en-us/windows/desktop/WinProg64/running-32-bit-applications

Translation libraries Edit

The WoW64 subsystem comprises a lightweight compatibility layer that has similar interfaces on all 64-bit versions of Windows. It aims to create a 32-bit environment that provides the interfaces required to run unmodified 32-bit Windows applications on a 64-bit system. WOW64 is implemented using several DLLs, some of which include: [3]

  1. Wow64.dll, the core interface to the Windows NT kernel that translates (thunks) between 32-bit and 64-bit calls, including pointer and call stack manipulations
  2. Wow64win.dll, which provides the appropriate entry-points for 32-bit applications (win32k thunks)
  3. Wow64cpu.dll, which takes care of switching the processor from 32-bit to 64-bit mode. This is used in x86-64 implementations of Windows only.

Other DLLs and binaries are included for Itanium and ARMv8 64-bit architectures to provide emulation to x86 or for 32-bit entry points if the architecture has a native 32-bit operating mode.

Architectures Edit

Despite its outwardly similar appearance on all versions of 64-bit Windows, WoW64's implementation varies depending on the target instruction set architecture. For example, the version of 64-bit Windows developed for the Intel Itanium 2 processor (known as the IA-64 architecture) uses Wow64win.dll to set up the emulation of x86 instructions within the Itanium 2's unique instruction set. This emulation is a much more computationally expensive task than the Wow64win.dll's functions on the x86-64 architecture, which switches the processor hardware from its 64-bit mode to compatibility mode when it becomes necessary to execute a 32-bit thread, and then handles the switch back to 64-bit mode.

Registry and file system Edit

The WoW64 subsystem also handles other key aspects of running 32-bit applications. It is involved in managing the interaction of 32-bit applications with the Windows components such as the Registry, which has distinct keys for 64-bit and 32-bit applications. For example, HKEY_LOCAL_MACHINE\Software\Wow6432Node is the 32-bit equivalent of HKEY_LOCAL_MACHINE\Software (although 32-bit applications are not aware of this redirection). Some Registry keys are mapped from 64-bit to their 32-bit equivalents, while others have their contents mirrored, depending on the edition of Windows.

The operating system uses the %SystemRoot%\system32 directory for its 64-bit library and executable files. This is done for backward compatibility reasons, as many legacy applications are hardcoded to use that path. When executing 32-bit applications, WoW64 transparently redirects access to "system32" (e.g. DLL loads) to %SystemRoot%\SysWoW64, which contains 32-bit libraries and executables. Exceptions from these redirects are:[4]

  • %SystemRoot%\system32\catroot
  • %SystemRoot%\system32\catroot2
  • %SystemRoot%\system32\driverstore (redirected on Windows Server 2008, Windows Vista, Windows Server 2003 and Windows XP)
  • %SystemRoot%\system32\drivers\etc
  • %SystemRoot%\system32\logfiles
  • %SystemRoot%\system32\spool

The redirection helps to keep 32-bit applications working without them needing to be aware of the WoW64 status.[4] If a 32-bit application wants to access the real %SystemRoot%\System32, it can do so through the pseudo-directory %SystemRoot%\sysnative since Windows Vista.[4] Detection of Wow64 status is possible via IsWow64Process().

There are two Program Files directories each visible to both 32-bit and 64-bit applications. The directory that stores the 32 bit files is called Program Files (x86) to differentiate between the two, while the 64 bit maintains the traditional Program Files name without any additional qualifier. File system redirection is not used to maintain the separation; instead, WoW64 changes FOLDERID_ProgramFiles and similar query results to point installer programs to the correct directory.[5]

Application compatibility Edit

32-bit applications that include only 32-bit kernel-mode device drivers, or that plug into the process space of components that are implemented purely as 64-bit processes (e.g. Windows Explorer) cannot be executed on a 64-bit platform.

32-bit service applications are supported. The SysWOW64 folder located in the Windows folder on the OS drive contains several applications to support 32-bit applications (e.g. cmd.exe, odbcad32.exe, to register ODBC connections for 32-bit applications). 16-bit legacy applications for MS-DOS and early versions of Windows are usually incompatible with 64-bit versions of Windows Vista, 7, 8, and 10, but can be run on a 64-bit Windows OS via virtualization software. 32-bit versions of Windows XP, Vista, 7, 8, and 10 on the other hand, can usually run 16-bit applications with few to no problems. 16-bit applications cannot be directly run under x64 editions of Windows, because the CPU does not support VM86 mode when running in x64.

Internet Explorer is implemented as both a 32-bit and a 64-bit application because of the large number of 32-bit ActiveX components on the Internet that would not be able to plug into the 64-bit version.

Previously, the 32-bit version was used by-default and it was difficult to set the 64-bit version to be the default browser. This changed in Internet Explorer 10, which ran 32-bit add-ons inside a 64-bit session, eliminating the need to switch between the two versions. If a user was to go into the 32-bit folder (typically C:\Program Files (x86)\Internet Explorer) and double-click the iexplore.exe file there, the 64-bit version will still load. In Internet Explorer 9 and previous, this would load only the 32-bit version.

As of 2010, a bug in the translation layer of the x64 version of WoW64[6][7] also renders all 32-bit applications that rely on the Windows API function GetThreadContext incompatible. Such applications include application debuggers, call stack tracers (e.g. IDEs displaying call stack) and applications that use garbage collection (GC) engines. One of the more widely used but affected[8] GC engines is the Boehm GC. It is also used as the default garbage collector of the equally popular Mono. While Mono has introduced a new (but optional) GC as of October 2010 called SGen-GC, it performs stack scanning in the same manner as Boehm GC, thus also making it incompatible under WoW64. No fix has been provided as of July 2016, although workarounds have been suggested.[9]

Performance Edit

According to Microsoft, 32-bit software running under WOW64 has similar performance to executing under 32-bit Windows, but with fewer threads possible and other overheads.[10]

A 32-bit application can be given a full 4 gigabytes of virtual memory on a 64-bit system, whereas on a 32-bit system, some of this addressable memory is lost because it is used by the kernel and memory-mapped peripherals such as the display adaptor, typically resulting in apps being able to use either 2GB or 3GB of RAM at most.

See also Edit

  • Shim (computing)
  • User Account Control also has a mechanism for dealing with "older" programs that write files to specific areas, on "newer" windows. Files written from a process without administrator privileges to protected locations, such as Program Files and windows\system32, will be redirected to a virtual store directory.
  • Windows on Windows

References Edit

  1. ^ QuinnRadich; DCtheGeek; msatranjr (2020-08-19). . learn.microsoft.com. Archived from the original on 2023-04-16. Retrieved 2023-04-16.
  2. ^ Conway, Adam (2023-01-25). "Wine 8.0 released with better controller compatibility, experimental WoW64 support, and more". XDA Developers. from the original on 2023-04-16. Retrieved 2023-04-16.
  3. ^ "WOW64 Implementation Details". Microsoft. Retrieved 2018-04-21.
  4. ^ a b c "File System Redirector (Windows)". msdn.microsoft.com.
  5. ^ "winapi - SHGetFolderPath() 32 bit vs 64 bit". Stack Overflow.
  6. ^ Saw, Zach (November 13, 2010). "WOW64 bug: GetThreadContext() may return stale contents". Zach Saw's Blog. Retrieved 2010-11-15.
  7. ^ "WOW64 OS bug: Old 32-bit XP apps failing under Win7 WOW64". Microsoft Developer Network. November 11, 2010. Retrieved 2010-11-15.
  8. ^ "Discussions about the Boehm Garbage Collector (Boehm GC)". Retrieved 2010-11-25.
  9. ^ "GetThreadContext returns stale register values on WOW64". Microsoft= 2016-07-23. Retrieved 2016-07-23.
  10. ^ "Performance and Memory Consumption Under WOW64". Microsoft. Retrieved 2013-05-06.

External links Edit

  • MSDN page on running 32 bit apps on 64 bit Windows

wow64, this, article, needs, additional, citations, verification, please, help, improve, this, article, adding, citations, reliable, sources, unsourced, material, challenged, removed, find, sources, news, newspapers, books, scholar, jstor, 2013, learn, when, r. This article needs additional citations for verification Please help improve this article by adding citations to reliable sources Unsourced material may be challenged and removed Find sources WoW64 news newspapers books scholar JSTOR May 2013 Learn how and when to remove this template message This article is missing information about x64 on ARM64 ARM64EC ABI formerly ARM64X with 1 1 register mapping to x64 calling convention Please expand the article to include this information Further details may exist on the talk page June 2021 In computing on Microsoft platforms WoW64 Windows 32 bit on Windows 64 bit is a subsystem of the Windows operating system capable of running 32 bit applications on 64 bit Windows 1 It is included in all 64 bit versions of Windows including Windows XP Professional x64 Edition IA 64 and x64 versions of Windows Server 2003 as well as x64 versions of Windows Vista Windows Server 2008 Windows 7 Windows 8 Windows Server 2012 Windows 8 1 Windows 10 Windows Server 2016 Windows Server 2019 Windows 11 Windows Server 2022 and Wine 2 as well as ARM64 versions of Windows 10 Windows 11 and Windows Server 2022 except in Windows Server Server Core where it is an optional component and Windows Nano Server where it is not included WoW64 aims to take care of many of the differences between 32 bit Windows and 64 bit Windows particularly involving structural changes to Windows itself WoW64Other namesWindows 32 bit on Windows 64 bitDeveloper s MicrosoftInitial releaseOctober 25 2001 21 years ago 2001 10 25 Operating systemMicrosoft WindowsPlatformIA 64 x86 64 ARM64TypeCompatibility layerLicenseProprietary commercial softwareWebsitedocs wbr microsoft wbr com wbr en us wbr windows wbr desktop wbr WinProg64 wbr running 32 bit applications Contents 1 Translation libraries 2 Architectures 3 Registry and file system 4 Application compatibility 5 Performance 6 See also 7 References 8 External linksTranslation libraries EditThe WoW64 subsystem comprises a lightweight compatibility layer that has similar interfaces on all 64 bit versions of Windows It aims to create a 32 bit environment that provides the interfaces required to run unmodified 32 bit Windows applications on a 64 bit system WOW64 is implemented using several DLLs some of which include 3 Wow64 dll the core interface to the Windows NT kernel that translates thunks between 32 bit and 64 bit calls including pointer and call stack manipulations Wow64win dll which provides the appropriate entry points for 32 bit applications win32k thunks Wow64cpu dll which takes care of switching the processor from 32 bit to 64 bit mode This is used in x86 64 implementations of Windows only Other DLLs and binaries are included for Itanium and ARMv8 64 bit architectures to provide emulation to x86 or for 32 bit entry points if the architecture has a native 32 bit operating mode Architectures EditDespite its outwardly similar appearance on all versions of 64 bit Windows WoW64 s implementation varies depending on the target instruction set architecture For example the version of 64 bit Windows developed for the Intel Itanium 2 processor known as the IA 64 architecture uses Wow64win dll to set up the emulation of x86 instructions within the Itanium 2 s unique instruction set This emulation is a much more computationally expensive task than the Wow64win dll s functions on the x86 64 architecture which switches the processor hardware from its 64 bit mode to compatibility mode when it becomes necessary to execute a 32 bit thread and then handles the switch back to 64 bit mode Registry and file system EditThe WoW64 subsystem also handles other key aspects of running 32 bit applications It is involved in managing the interaction of 32 bit applications with the Windows components such as the Registry which has distinct keys for 64 bit and 32 bit applications For example HKEY LOCAL MACHINE Software Wow6432Node is the 32 bit equivalent of HKEY LOCAL MACHINE Software although 32 bit applications are not aware of this redirection Some Registry keys are mapped from 64 bit to their 32 bit equivalents while others have their contents mirrored depending on the edition of Windows The operating system uses the a href 25SystemRoot 25 html class mw redirect title SystemRoot SystemRoot a system32 directory for its 64 bit library and executable files This is done for backward compatibility reasons as many legacy applications are hardcoded to use that path When executing 32 bit applications WoW64 transparently redirects access to system32 e g DLL loads to SystemRoot SysWoW64 which contains 32 bit libraries and executables Exceptions from these redirects are 4 SystemRoot system32 catroot SystemRoot system32 catroot2 SystemRoot system32 driverstore redirected on Windows Server 2008 Windows Vista Windows Server 2003 and Windows XP SystemRoot system32 drivers etc SystemRoot system32 logfiles SystemRoot system32 spoolThe redirection helps to keep 32 bit applications working without them needing to be aware of the WoW64 status 4 If a 32 bit application wants to access the real SystemRoot System32 it can do so through the pseudo directory SystemRoot sysnative since Windows Vista 4 Detection of Wow64 status is possible via IsWow64Process There are two Program Files directories each visible to both 32 bit and 64 bit applications The directory that stores the 32 bit files is called Program Files x86 to differentiate between the two while the 64 bit maintains the traditional Program Files name without any additional qualifier File system redirection is not used to maintain the separation instead WoW64 changes FOLDERID ProgramFiles and similar query results to point installer programs to the correct directory 5 Application compatibility Edit32 bit applications that include only 32 bit kernel mode device drivers or that plug into the process space of components that are implemented purely as 64 bit processes e g Windows Explorer cannot be executed on a 64 bit platform 32 bit service applications are supported The SysWOW64 folder located in the Windows folder on the OS drive contains several applications to support 32 bit applications e g cmd exe odbcad32 exe to register ODBC connections for 32 bit applications 16 bit legacy applications for MS DOS and early versions of Windows are usually incompatible with 64 bit versions of Windows Vista 7 8 and 10 but can be run on a 64 bit Windows OS via virtualization software 32 bit versions of Windows XP Vista 7 8 and 10 on the other hand can usually run 16 bit applications with few to no problems 16 bit applications cannot be directly run under x64 editions of Windows because the CPU does not support VM86 mode when running in x64 Internet Explorer is implemented as both a 32 bit and a 64 bit application because of the large number of 32 bit ActiveX components on the Internet that would not be able to plug into the 64 bit version Previously the 32 bit version was used by default and it was difficult to set the 64 bit version to be the default browser This changed in Internet Explorer 10 which ran 32 bit add ons inside a 64 bit session eliminating the need to switch between the two versions If a user was to go into the 32 bit folder typically C Program Files x86 Internet Explorer and double click the iexplore exe file there the 64 bit version will still load In Internet Explorer 9 and previous this would load only the 32 bit version As of 2010 update a bug in the translation layer of the x64 version of WoW64 6 7 also renders all 32 bit applications that rely on the Windows API function GetThreadContext incompatible Such applications include application debuggers call stack tracers e g IDEs displaying call stack and applications that use garbage collection GC engines One of the more widely used but affected 8 GC engines is the Boehm GC It is also used as the default garbage collector of the equally popular Mono While Mono has introduced a new but optional GC as of October 2010 called SGen GC it performs stack scanning in the same manner as Boehm GC thus also making it incompatible under WoW64 No fix has been provided as of July 2016 although workarounds have been suggested 9 Performance EditThis section needs expansion You can help by adding to it August 2013 According to Microsoft 32 bit software running under WOW64 has similar performance to executing under 32 bit Windows but with fewer threads possible and other overheads 10 A 32 bit application can be given a full 4 gigabytes of virtual memory on a 64 bit system whereas on a 32 bit system some of this addressable memory is lost because it is used by the kernel and memory mapped peripherals such as the display adaptor typically resulting in apps being able to use either 2GB or 3GB of RAM at most See also EditShim computing User Account Control also has a mechanism for dealing with older programs that write files to specific areas on newer windows Files written from a process without administrator privileges to protected locations such as Program Files and windows system32 will be redirected to a virtual store directory Windows on WindowsReferences Edit QuinnRadich DCtheGeek msatranjr 2020 08 19 WOW64 Implementation Details learn microsoft com Archived from the original on 2023 04 16 Retrieved 2023 04 16 Conway Adam 2023 01 25 Wine 8 0 released with better controller compatibility experimental WoW64 support and more XDA Developers Archived from the original on 2023 04 16 Retrieved 2023 04 16 WOW64 Implementation Details Microsoft Retrieved 2018 04 21 a b c File System Redirector Windows msdn microsoft com winapi SHGetFolderPath 32 bit vs 64 bit Stack Overflow Saw Zach November 13 2010 WOW64 bug GetThreadContext may return stale contents Zach Saw s Blog Retrieved 2010 11 15 WOW64 OS bug Old 32 bit XP apps failing under Win7 WOW64 Microsoft Developer Network November 11 2010 Retrieved 2010 11 15 Discussions about the Boehm Garbage Collector Boehm GC Retrieved 2010 11 25 GetThreadContext returns stale register values on WOW64 Microsoft 2016 07 23 Retrieved 2016 07 23 Performance and Memory Consumption Under WOW64 Microsoft Retrieved 2013 05 06 External links EditMSDN page on running 32 bit apps on 64 bit Windows Retrieved from https en wikipedia org w index php title WoW64 amp oldid 1154611478, wikipedia, wiki, book, books, library,

article

, read, download, free, free download, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, picture, music, song, movie, book, game, games.