web-dev-qa-db-ja.com

64ビットWindowsはKERNEL64を使用しますか?

Dumpbinを使用していくつかのライブラリを調べていたところ、64ビットバージョンがすべてKERNEL32にリンクされていることに気付きました。 64ビットWindowsにKERNEL64はありませんか?そうでない場合、なぜですか?

私のオペレーティングシステムはすべて32ビットなので、見ているだけではわかりません。グーグル検索で価値のあるものは何も表示されないので、KERNEL64はないのではないかと思いますが、これがなぜなのかについてはまだ知りたくありません。

編集:私はこれを後で見つけました。これはかなり便利です。 x64へのMSDNガイド

23
Dana Robinson

64ビットWindowsでも、常にkernel32.dllと呼ばれます。これは、system32に64ビットのバイナリが含まれ、syswow64に32ビットのバイナリが含まれるのと同じ互換性の理由によるものです。

24
Ben Straub

64ビットバージョンのWindowsでは、「kernel32.dll」の1つに64ビットコードが含まれていますが、kernel32.dllと呼ばれています。これは少なくとも誤解を招く

次のリンクがこれに対する解決策を与えることを願っています

http://www.howzatt.demon.co.uk/articles/DebuggingInWin64.html

http://www.viva64.com/en/l/0002/

http://blogs.msdn.com/b/aaron_margosis/archive/2012/12/10/using-ntfs-junctions-to-fix-application-compatibility-issues-on-64-bit-editions- of-windows.aspx

64ビットWindowsは、そのような環境を「そのまま」提供し、「Windows on Windows 64」サブシステムを使用して32ビットアプリケーションをサポートします。このサブシステムはWOW64と略され、ユーザーモードで実行され、32ビットコールをオペレーティングシステムにマッピングします。カーネルを同等の64ビット呼び出しに変換します。これは通常、呼び出し元のプログラムにはほとんど見えません。Windowsは、%windir%\ system32に64ビットDLLのセットを提供し、%windir%\ syswow64に同等の32ビットDLLのセットを提供します。実際、このディレクトリ内のバイナリイメージの大部分は、32ビットWindowsインストールのsystem32ディレクトリ内の同じファイルと同じです。 (64ビットDLLがsystem32にあり、32ビットDLLがsyswow64にあるのは残念な命名問題ですが、そこにあります)

4
Padma Yeddula