最終更新:2011-02-18 (金) 23:31:43 (4787d)
WOW64
Top / WOW64
Windows on Windows 64
64bit版Windows上で、32bitプログラムを動かす仕組み
Intel64?/AMD64では、シームレスに32bitプログラムと64bitプログラムを動かせる。そのため、64bit環境で32bitプログラムを、64bitプログラムとほぼ同等のパフォーマンスで動かすことが可能だ
概要
- 64bit Windowsでは、ソフトのデータタイプが32bitから64bitに拡張されている。そのため、Intel64?/AMD64の「64bit Mode?」で直接32bitプログラムを実行すると、CPU側では64bitレジスタがそのまま利用されてしまい、32bitプログラムではデータがおかしくなり、動作しなくなる。
- WOW64では32bitプログラムで作られたアプリケーションを検出すると、CPUを32bitプログラムが動く「Compatibility Mode?」に変更する。これにより、64bit CPUでも、問題なく32bitプログラムが動作するようになっている。
制限
- WOW64自体は、OSのユーザーモード?で動作している。一方で、カーネルモードで動くOSカーネル自体は、完全に64bit化されている。そのため、カーネルモードで動作するプログラム、例えばデバイスドライバ類はWOW64を利用できない。
- またWOW64は、32bitプログラムと64bitプログラムを、ひとつのプロセス内で混在させて実行できない。そのため、64bitプログラムで呼び出せるDLLは64bit DLLだけだし、32bitのDLLは呼び出せない。もちろん32bitプログラムからの64bit DLL呼び出しもできない。
システムフォルダ、レジストリ、プログラムファイル
- 32bit
- \Windows\SysWOW64
- HKEY_LOCAL_MACHINE¥Software¥Wow6432Node
- \Program Files(x86)
- 64bit
- \Windows\System32
- HKEY_LOCAL_MACHINE¥Software¥
- \Program Files