我用dumpbin查看了一些库,发现所有的64位版本都链接到KERNEL32。在64位Windows中没有KERNEL64吗?如果没有,为什么呢?
我的所有操作系统都是32位的,所以我不能直接查看。通过谷歌搜索找不到有价值的信息,所以我怀疑64位Windows中没有KERNEL64,但是我还是很想知道为什么会这样。
编辑:后来我找到了这个非常有用的链接。MSDN x64指南
我用dumpbin查看了一些库,发现所有的64位版本都链接到KERNEL32。在64位Windows中没有KERNEL64吗?如果没有,为什么呢?
我的所有操作系统都是32位的,所以我不能直接查看。通过谷歌搜索找不到有价值的信息,所以我怀疑64位Windows中没有KERNEL64,但是我还是很想知道为什么会这样。
编辑:后来我找到了这个非常有用的链接。MSDN x64指南
即使在64位的Windows上,kernel32.dll
仍然被称为这个名字。这是因为为了保持兼容性,system32
包含64位二进制文件,而syswow64
包含32位二进制文件。
((BOOL (WINAPI *)(DWORD, DWORD))GetProcAddress(GetModuleHandle("kernel32"), "Beep"))(1000, 300);
。我相信如果微软能够回到过去,他们只会将其命名为Kernel.dll,这表明了发布后更改接口的代价。 - Dmytrohttp://www.howzatt.demon.co.uk/articles/DebuggingInWin64.html
64位Windows提供了这样一个环境,“开箱即用”,并使用“Windows on Windows 64”(WOW64)子系统支持32位应用程序,该子系统缩写为WOW64,运行在用户模式下,并将32位调用映射到操作系统内核的等效64位调用。这通常对于调用程序几乎是不可见的。Windows在%windir%\system32中提供了一组64位DLL,在%windir%\syswow64中提供了一组等效的32位DLL。实际上,此目录中的大部分二进制映像与32位Windows安装中system32目录中相同的文件相同。(对我来说,64位DLL存在system32中,而32位DLL存在syswow64中,这似乎是一个不幸的命名问题,但它就在那里)。