WOW64

Windows10

32bitソフトの64bit環境での動作

WOW64での例外処理

以下の手法は、32ビットアプリケーションと64ビットアプリケーション間の通信に使用できます。 64ビットバージョンのWindowsでは、相互運用性のために32ビットハンドルを使用します。 32ビットアプリケーションと64ビットアプリケーション間でハンドルを共有する場合、重要なのは下位32ビットのみであるため、ハンドルを切り捨てるか(64ビットから32ビットに渡す場合)、ハンドルを符号拡張すること( 32ビットから64ビットに渡す場合)。共有できるハンドルには、ウィンドウ(HWND)などのユーザーオブジェク ...

Windows10

32bitソフトの64bit環境での動作

WOW64でのレジストリリダイレクトの例

次のコード例は、64ビットWindowsのレジストリリダイレクタによって提供されるレジストリの個別のビューを示しています。また、キーが共有されているかリダイレクトされているかに応じて、キーの値がどのように設定されるかを示します。詳細については、「WOW64の影響を受けるレジストリキー」を参照してください。 32ビットと64ビットの両方のWindows用に、次のコードを個別にコンパイルします。結果の各実行可能ファイルを64ビットWindowsで実行し、出力を比較します。両方のバージョンのサンプル出力は、ソー ...

Windows10

32bitソフトの64bit環境での動作

代替レジストリビューへのアクセス

デフォルトでは、WOW64で実行されている32ビットアプリケーションは32ビットレジストリビューにアクセスし、64ビットアプリケーションは64ビットレジストリビューにアクセスします。次のフラグにより​​、32ビットアプリケーションが64ビットレジストリビューのリダイレクトされたキーにアクセスし、64ビットアプリケーションが32ビットレジストリビューのリダイレクトされたキーにアクセスできるようになります。これらのフラグは、共有レジストリキーには影響しません。詳細については、「WOW64の影響を受けるレジスト ...

Windows10

32bitソフトの64bit環境での動作

WOW64の影響を受けるレジストリキー

WOW64でのリダイレクト、共有、反映されたキー WOW64シンボリックリンク WOW64では、特定のレジストリキーがリダイレクトされます。 32ビットまたは64ビットのアプリケーションがリダイレクトされたキーに対してレジストリコールを行うと、レジストリリダイレクタがそのコールをインターセプトして、キーの対応する物理的なレジストリの場所にマッピングします。詳細については、「レジストリリダイレクタ」を参照してください。 その他のレジストリキーは、64ビットWindows上の32ビットアプリケーションと64ビ ...

Windows10

32bitソフトの64bit環境での動作

レジストリリフレクション

[このトピックの情報は、Windows Server 2008、Windows Vista、Windows Server 2003、およびWindows XPに適用されます。 Windows 7およびWindows Server 2008 R2以降、WOW64はレジストリリフレクションを使用しなくなり、以前に反映されたキーが代わりに共有されます。詳細については、「WOW64の影響を受けるレジストリキー」を参照してください。] レジストリリダイレクタは、WOW64上のレジストリの特定部分の個別の論理ビューを ...

Windows10

32bitソフトの64bit環境での動作

WOW64のデバッグ

WOW64で実行されているアプリケーションは、次の2つの方法でデバッグできます。 NTSD、WinDbg、Visual Studioなどのx86ホストデバッガーを使用します。 32ビットNTSDは、リテールインストールでは%systemroot%\ syswow64にインストールされます。 x86デバッガーはx86コードのデバッグに使用できますが、64ビットのネイティブコードであるため、WOW64サンクレイヤー内のブレークポイントの逆アセンブルまたは設定には使用できません。 CDB、NTSD、WinDbg ...

Windows10

32bitソフトの64bit環境での動作

32ビットアプリケーションと64ビットアプリケーション間のプロセス間通信

以下の手法は、32ビットアプリケーションと64ビットアプリケーション間の通信に使用できます。 64ビットバージョンのWindowsは、相互運用性のために32ビットハンドルを使用します。 32ビットアプリケーションと64ビットアプリケーション間でハンドルを共有する場合、重要なのは下位32ビットのみであるため、ハンドルを切り捨てるか(64ビットから32ビットに渡す場合)、またはハンドルを符号拡張するのが安全です( 32ビットから64ビットに渡す場合)。共有できるハンドルには、ウィンドウ(HWND)などのユーザ ...

Windows10

32bitソフトの64bit環境での動作

WOW64でのプロセッサアフィニティ

32ビットWindowsは、最大32のプロセッサをサポートします。したがって、GetProcessAffinityMaskなどの関数は、WOW64で呼び出されると、32プロセッサを搭載したコンピューターをシミュレートします。 アフィニティマスクは、マスクの上位32ビットと下位32ビットのビット単位のOR演算を実行することによって取得されます。したがって、スレッドにプロセッサ0、1、および32のアフィニティがある場合、プロセッサ32はプロセッサ0にマップするため、WOW64はアフィニティを0および1として報 ...

Windows10

32bitソフトの64bit環境での動作

WOW64でのメモリ管理

WOW64でのメモリ管理は、プロセッサアーキテクチャによって異なります。 Itaniumサポート WOW64は、Itaniumプロセッサが使用するネイティブの8 KBページの上に4 KBページをシミュレートします。プロセッサは、オーバーヘッドが少ない優れたシミュレーションを提供することで支援します。シミュレーションコードは、以下のケースを処理できません。 トラッキングを書き込みます。 GetWriteWatch関数とResetWriteWatch関数は、ネイティブのページサイズの粒度を使用してカーネルに実 ...

Windows10

32bitソフトの64bit環境での動作

ファイルシステムリダイレクタ

%windir%\ System32ディレクトリは、64ビットWindows上の64ビットアプリケーション用に予約されています。 DLLの64ビットバージョンが作成されたとき、ほとんどのDLLファイル名は変更されなかったため、DLLの32ビットバージョンは別のディレクトリに保存されます。 WOW64は、ファイルシステムリダイレクタを使用してこの違いを隠します。 ほとんどの場合、32ビットアプリケーションが%windir%\ System32、%windir%\ lastgood \ system32、また ...

Windows10

32bitソフトの64bit環境での動作

レジストリリダイレクター

レジストリリダイレクタは、WOW64のレジストリの特定部分の個別の論理ビューを提供することにより、32ビットアプリケーションと64ビットアプリケーションを分離します。レジストリリダイレクタは、それぞれの論理レジストリビューへの32ビットおよび64ビットレジストリ呼び出しをインターセプトし、それらを対応する物理レジストリの場所にマップします。リダイレクトプロセスは、アプリケーションに対して透過的です。したがって、32ビットアプリケーションは、データが64ビットWindowsの別の場所に保存されている場合でも ...

Windows10

32bitソフトの64bit環境での動作

WOW64でのパフォーマンスとメモリ消費

WOW64でのパフォーマンスとメモリ消費は、次の要因によって決まります。 ・プロセッサハードウェア 命令エミュレーションはチップ上で実行されます。 x64プロセッサでは、x86命令はプロセッサによってネイティブに実行されます。したがって、x64上のWOW64での実行速度は、32ビットWindowsでの速度に似ています。 Intel ItaniumプロセッサおよびARM64プロセッサでは、エミュレーションにより多くのソフトウェアが関与し、結果としてパフォーマンスが低下します。 ・APIサンクのオーバーヘッド ...

Windows10

32bitソフトの64bit環境での動作

WOW64実装の詳細

WOW64エミュレーターはユーザーモードで実行されます。 Ntdll.dllの32ビットバージョンとプロセッサのカーネル間のインターフェイスを提供し、カーネル呼び出しをインターセプトします。 WOW64エミュレーターは、次のDLLで構成されています。 Wow64.dllは、Ntoskrnl.exeエントリポイント関数のコアエミュレーションインフラストラクチャとサンクを提供します。 Wow64Win.dllは、Win32k.sysエントリポイント関数のサンクを提供します。 (x64のみ)Wow64Cpu.d ...

Windows10

32bitソフトの64bit環境での動作

32ビットアプリケーションの実行

WOW64は、32ビットWindowsベースのアプリケーションを64ビットWindowsでシームレスに実行できるx86エミュレーターです。これにより、32ビット(x86)Windowsアプリケーションを64ビット(x64)Windowsでシームレスに実行できます。また、32ビット(x86)および32ビット(ARM)Windowsアプリケーションを64ビット( ARM64)Windows。 WOW64実装の詳細 システムは、32ビットアプリケーションを64ビットアプリケーションから分離します。これには、ファ ...

© 2020 幸せになれるPCライフ