WOW64とは? わかりやすく解説

WOW64

OSのほかの用語一覧
Windows:  Windows 2.0  Windows 7  Windows 8  WOW64  Windows 9  Windows 1.0  Windows OS

WOW64

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2024/08/03 08:30 UTC 版)

WOW64(ワウ64、Windows 32-bit On Windows 64-bit)とは、64ビット (x64ARM64IA-64) 版のMicrosoft WindowsにおいてWin32アプリケーションを実行する、エミュレーションレイヤーサブシステムである。

概要

64ビット版のWindowsは基本的に、完全に64ビット化されたNTカーネルで動作する。x64IA-64対応のオペレーティングシステムでは、x86の32ビットABIに対応するかどうかの選択を迫られることとなった。64ビットのWindowsでは、64ビットABIと32ビットABIの両方に対応し、Win32 APIをWin64 APIに呼び変えるエミュレーション層が実装されている。これがWOW64である。これにより、32ビットアプリケーションはそのまま64ビットのWindowsでも動作する。

以下のサンク (thunk) レイヤーが用意されている。提供されるモジュールの一部はx64/ARM64/IA-64でそれぞれ異なる[1]

  • Wow64.dll: 中核となるエミュレーション基盤および Ntoskrnl.exe のエントリポイント関数のためのサンクを提供する。
  • Wow64Win.dll: Win32k.sys のエントリポイント関数のためのサンクを提供する。
  • Wow64Cpu.dll (x64のみ): x86プログラムをx64上で実行するためのサポートを提供する。
  • IA32Exec.bin (Intel Itaniumのみ): x86ソフトウェアエミュレーターを含む。
  • Wowia32x.dll (Intel Itaniumのみ): IA32Exec.bin とWOW64間のインターフェイスを提供する。
  • xtajit.dll (ARM64のみ): x86ソフトウェアエミュレーターを含む。
  • wowarmw.dll (ARM64のみ): ARM32プログラムをARM64上で実行するためのサポートを提供する。

x64/IA-64 Windowsはx86のエミュレーションレイヤーのみを提供するが、ARM64 Windowsはx86とARM32のエミュレーションレイヤーを提供する。なお、ARM64ではx64のエミュレーションレイヤーの提供も計画されている[2]

構造

WOW64は、WOW64ホストプロセスによって予約された4GBの仮想空間に32ビットABIのコードを読み込み、そこで発生したWin64 APIに変換可能なAPI呼び出しを変換して、Win64サブシステムに伝達する。構造体の変換は自動的に行われ、Win32側では現在動作しているOSが32ビットシステムか、64ビットシステムかを意識する必要は全くない。またユーザーモードで動作するコンポーネント群は32ビット版と64ビット版が用意され、例えばOLEなどは32ビットで閉じた範囲で動作できる。64ビット版で提供されるコードは単一のソースから、32ビット版と64ビット版両方をそれぞれコンパイルして作られているため、機能的には32ビットシステムと64ビットシステムの間に差異は無い。

問題点

Windowsの64ビットABIは、Win32の32ビットABIをそのまま64ビットに拡張したものである。従って、64ビットABIのアプリケーションは8TBのアドレス空間を独占的に使えるようになっているが、ここに一つの問題点がある。32ビットABIのコードを格納可能な仮想空間下位4GBを64ビットABIに独占されてしまったことである。このため、32ビットABIを格納する場所が無く、32ビットアプリケーションはもとより、DLLOCXをロードして呼び出すことも不可能となってしまった。そのため、マイクロソフトは、32ビットABIのコードと64ビットABIのコードとの相互な呼び出しを禁止している(サンクによって間接的な呼び出しは可能であるが、x64アーキテクチャで本来可能であった32ビットコードと64ビットコードのシームレスな相互呼び出し機能は全く生かされていない)。この顕著な例として、Internet Explorer (IE) の振る舞いが挙げられる。32ビットのActiveXコンポーネントを検出すると、64ビット版IEは処理を中断して32ビット版IEに処理を引き継ぐ。32ビットアプリケーションと64ビットアプリケーションの間には、実行ファイル以外のコンポーネント群を互いに利用することができない深い溝がある。

プログラミング

16ビット (Win16) から32ビット (Win32) への過渡期に用意されたサンクメカニズムはシステムの不安定化の原因となっていたため、WOW64では提供されず、32ビットコードと64ビットコードは1つのプロセス内に共存できない。32ビットのプロセスと64ビットのプロセスとの通信は、アウトプロセスCOM(DCOM)またはWCFなどによるRPCやDLLプロキシCOMサーバーをはじめとして、各種のプロセス間通信が使用可能である[3]。なお、一部のハンドル値(ウィンドウハンドルHWNDなど)は下位32ビットのみが有効値として使用されるため、Win32/Win64で共有することができる。

システムフォルダーとレジストリ

2010年現在の64ビットWindowsでは、Windowsシステムフォルダー (%systemroot%\System32) には64ビットのバイナリが置かれ、32ビットプログラムはその中にあるファイルには直接アクセスすることができない。32ビットプログラムによるSystem32フォルダーへのアクセスは、自動的に%systemroot%\SysWOW64へとリダイレクトされる動作となり、プログラムからはSystem32フォルダーにアクセスしているように見える。SysWOW64フォルダーには32ビットのバイナリが用意されている。なお、後方互換性の理由から、64ビットのシステムフォルダーであるにもかかわらず「System32」という名前になっている[4]

Windowsレジストリへ32ビットアプリケーションがアクセスする場合は、一部リダイレクトされる。HKLM\SOFTWAREとHKCR\下のレジストリキーへのアクセスは、それぞれWow6432Nodeと呼ばれるキーの配下にアクセスしている。

脚注

外部リンク


WOW64 (Windows on Windows 64)

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/03/07 20:30 UTC 版)

Windows API」の記事における「WOW64 (Windows on Windows 64)」の解説

Win64上でWin32エミュレーションするサブシステムによる実装

※この「WOW64 (Windows on Windows 64)」の解説は、「Windows API」の解説の一部です。
「WOW64 (Windows on Windows 64)」を含む「Windows API」の記事については、「Windows API」の概要を参照ください。

ウィキペディア小見出し辞書の「WOW64」の項目はプログラムで機械的に意味や本文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。 お問い合わせ



固有名詞の分類


英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「WOW64」の関連用語

WOW64のお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



WOW64のページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
IT用語辞典バイナリIT用語辞典バイナリ
Copyright © 2005-2025 Weblio 辞書 IT用語辞典バイナリさくいん。 この記事は、IT用語辞典バイナリの【WOW64】の記事を利用しております。
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアのWOW64 (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。
ウィキペディアウィキペディア
Text is available under GNU Free Documentation License (GFDL).
Weblio辞書に掲載されている「ウィキペディア小見出し辞書」の記事は、WikipediaのWindows API (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。

©2025 GRAS Group, Inc.RSS