32位和64位DLL如何链接到相同的C:\ system32 \ kernel32.DLL?

时间:2012-02-08 11:45:43

标签: windows dll 32bit-64bit

我确定64位DLL无法链接到32位DLL。

1 个答案:

答案 0 :(得分:6)

Wow64有一个文件重定向器。它具有相同的命名dll但存储在适当的位置。这个概念在http://msdn.microsoft.com/en-us/library/aa384187(v=vs.85).aspx

解释

%windir%\ System32目录是为64位应用程序保留的。创建64位版本的DLL时,大多数DLL文件名都没有更改,因此32位版本的DLL存储在不同的目录中。 WOW64使用文件系统重定向器隐藏了这种差异。

在大多数情况下,只要32位应用程序尝试访问%windir%\ System32,就会将访问权限重定向到%windir%\ SysWOW64。对%windir%\ lastgood \ system32的访问权限被重定向到%windir%\ lastgood \ SysWOW64。对%windir%\ regedit.exe的访问权限被重定向到%windir%\ SysWOW64 \ regedit.exe。