64位Windows是否使用KERNEL64?

时间:2009-09-01 21:29:32

标签: windows dll 64-bit systems-programming

我正在使用dumpbin查看一些库,我注意到所有64位版本都链接到KERNEL32。在64位Windows上没有KERNEL64吗?如果没有,为什么?

我的所有操作系统都是32位,所以我不能只看。谷歌搜索没有任何价值,所以我怀疑没有KERNEL64,但我仍然很好奇为什么会这样。

编辑:我后来发现这个非常有用。 MSDN guide to x64

2 个答案:

答案 0 :(得分:18)

它总是被称为kernel32.dll,即使在64位窗口上也是如此。出于同样的兼容性原因,system32包含64位二进制文​​件,而syswow64包含32位二进制文​​件。

答案 1 :(得分:4)

在64位版本的Windows上,其中一个" 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 64'上使用Windows的32位应用程序。子系统,缩写为WOW64,在用户模式下运行,并将32位调用映射到操作系统内核,转换为等效的64位调用。这对于调用程序通常几乎是不可见的.Windows在%windir%\ system32中提供了一组64位DLL,在%windir%\ syswow64中提供了一组等效的32位DLL。实际上,此目录中的大部分二进制映像与32位Windows安装上的system32目录中的相同文件相同。 (在我看来,一个不幸的命名问题是64位DLL存在于system32中,而32位存在于syswow64中,但它存在)