WOW64
読み:ワウろくじゅうよん
外語:WOW64: Windows On Windows 64
Win32アプリケーションをWin64上で動かすためのエミュレーションレイヤのこと。
概要
Microsoft Windowsの64ビットマイクロプロセッサー対応版に搭載される、32ビットアプリケーション互換性維持の仕組みである。
64ビット版Windowsは、Windowsと名は付いても32ビット版Windowsとは非互換であり、そのままでは従来のアプリケーションは何一つ使うことができない。これは、16ビットWindowsに対する32ビットWindowsも同様であった。
通常のアプリケーションだけでなく、DLLなども同様で、32ビットプロセスは64ビットDLLを使うことはできず、また64ビットプロセスも32ビットDLLを使うことはできない。
そこで、APIに互換性がない新しいWindowsで従来のアプリケーションを動作させるために導入されている。
特徴
機構
32ビットアプリケーションのシステムコール(Win32)をフックし、64ビットシステムコール(Win64)に変換するプログラムである。
具体的には、Win32アプリケーションのシステムコールをWOW64がフックし、64ビットモードに移行、引数などをWin64 API用に変換してOSに対してシステムコールを発行する。戻り値を得たら、再び元の互換動作モードに復帰し、Win32 API用に変換した戻り値をアプリケーションに対して返す。
これにより、32ビットアプリケーションはWin32環境にいるのと同様の環境が得られ、64ビットWindows上でありながらWindows XP用などのWin32アプリケーションを動かすことができる。
システムコールだけではなく、例外のディスパッチなども同様にフックし、必要な処理をしている。
具体的には、次のようなプログラムが稼働する。
- WOW64.dll ‐ システムコールのフック等を実施
- WOW64cpu.dll ‐ CPUのモードスイッチを管理
- WOW64win.dll ‐ GUIシステムコールをフック
制約
WOW64はWin32アプリ用であるため、Win16アプリを動作させることは出来ない。
これは、x64では、仮想86モード機能がレガシーであるとして削除されたためである。このためWin32には16ビットアプリ実行環境WOW32が搭載されたが、Win64でのWOW64では16ビットアプリ実行環境を実装することが出来なかった。
再検索