Как 32-битные и 64-битные библиотеки DLL связаны с одним и тем же C: \ system32 \ kernel32.DLL? - PullRequest
4 голосов
/ 08 февраля 2012

Я был уверен, что 64-битная DLL не может связываться с 32-битной DLL.

1 Ответ

6 голосов
/ 08 февраля 2012

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.

...