2009-09-01 90 views
17

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

すべての私のオペレーティングシステムは32ビットなので、私は見ることができません。 Google検索では何も価値がないので、KERNEL64は存在しないと思うが、なぜこれがどういうものなのか不思議だ。

編集:これはかなり後になりました。これはかなり便利です。 MSDN guide to x64

+0

これは遠いフェッチですが、それはWindows APIはまだ同じです。カーネルはまだ64ビットです。 –

答えて

16

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

+7

*互換性の理由は何ですか? –

+1

@Martinこれは素晴らしい答えです:http://stackoverflow.com/questions/949959/why-do-64bit-dlls-go-to-system32-and-32bit-dlls-to-syswow64-on-64bit-windows –

+0

(BOOL(WINAPI *)(DWORD、DWORD))GetProcAddress(GetModuleHandle( "kernel32")、 "Beep")))()このコードを変更することなく、16ビット、32ビット、 1000、300); '。マイクロソフトが時間を追って戻ってきたら、Kernel.dllという名前をつけ、公開後にインターフェイスを変更するコストを見せてくれることは間違いない。 – Dmitry

4

Windowsの64ビットバージョンでは、「kernel32.dll」には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」サブシステム(WOW64と略記)を使用して32ビットアプリケーションをサポートしています。これはユーザモードで実行され、32ビットコールをオペレーティングシステムにマップします64ビットの同等の呼び出しに変換します。これは通常、呼び出すprogram.Windowsにはほとんど目に見えませんが、%windir%\ system32には64ビットのDLLが、%windir%\ syswow64には32ビットのDLLが含まれています。実際、このディレクトリ内のバイナリイメージの大部分は、32ビットWindowsインストールのsystem32ディレクトリ内の同じファイルと同じです。 (私には、64ビットのDLLがsystem32に、32ビットのDLLがsyswow64に生きているという不幸な命名の問題があると思われますが、そこにあります)

関連する問題