24

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

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

編集:後でこれを見つけましたが、これは非常に便利です。 x64 の MSDN ガイド

4

2 に答える 2

24

kernel32.dll64 ビット Windows でも、常に呼び出されます。system32これは、32 ビット バイナリが含まれている一方で、64 ビット バイナリが含まれているのと同じ互換性の理由によるものsyswow64です。

于 2009-09-01T21:36:47.770 に答える
5

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

于 2014-05-06T10:16:45.640 に答える