) 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 2000 Limited Edition
, Windows XP Professional x64 Edition
versions of Windows Server 2003
and 64-bit versions of Windows Vista
and Windows Server 2008
. WoW64 takes care of all the differences between 32-bit Windows and 64-bit Windows, particularly involving structural changes to Windows itself.
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 applications to run unmodified in the 64-bit system. Technically, WOW64 is implemented using three dynamic-link libraries
, which is the core interface to the Windows NT kernel
that translates between 32-bit and 64-bit calls, including pointer
and call stack
, which provides the appropriate entry points for 32-bit applications; and
, which takes care of switching the processor from 32-bit to 64-bit mode.
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
to set up the emulation of x86
instructions within the Itanium 2's unique instruction set
. This emulation is a more computationally expensive task than the
'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 applications 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.