WOW64
WoW64 (Windows-on-Windows 64-bit) is a subsystem of the Windows operating system that is capable of running 32-bit applications and is included on all 64-bit versions of Windows — including Windows XP 64-bit Editions, Windows Server 2003 x64 Edition and Windows Vista 64-bit Editions. WOW64 takes care of all the differences between 32-bit Windows and 64-bit Windows, particularly involving structural changes to Windows itself.
Contents |
Translation libraries
The WOW64 subsystem is a lightweight translation layer that has similar interfaces on all 64-bit versions of Windows. Its primary purpose is to create a 32-bit environment that provides the interfaces required to allow 32-bit Windows apps to run unmodified in the 64-bit system. Technically, WOW64 is implemented using three dynamic-link libraries (DLLs): Wow64.dll, which is the core interface to the NT kernel that translates between 32-bit and 64-bit calls, including pointer and stack manipulations; Wow64win.dll, which provides the appropriate entry points for 32-bit apps; and Wow64cpu.dll, which takes care of switching the processor from 32-bit to 64-bit mode.
Architectures
Despite its outwardly similar appearance on all versions of 64-bit Windows, WOW64's implementation varies depending on the target processor architecture. For example, the version of 64-bit Windows developed for the Intel Itanium 2 processor (known at Microsoft as IA-64 architecture) uses Wow64win.dll to set up the emulation of x86 instructions within the Itanium 2's unique instruction set. That's a more computationally expensive task than the Wow64win.dll's functions on the x64 architecture, which switches the processor hardware from its 64-bit mode to compatibility mode when it's time to execute a 32-bit thread, and then handles the switch back to 64-bit mode. No emulation is required for WOW64 on x64.
Registry and file system
The WOW64 subsystem also handles other key aspects of running 32-bit applications. For example, it's involved in managing the interaction of 32-bit apps with the Windows registry, which is somewhat different in 64-bit versions of the OS, and in providing an interface to the storage subsystem.
The operating system uses the %SystemRoot%\system32 directory for its 64-bit library and executable files. This is done for backwards compatibility reasons as many legacy applications are hardcoded to use that path. When executing 32-bit applications, WOW64 redirects requests for DLLs from that directory to %SystemRoot%\sysWOW64, which contains legacy libraries and executables.