Использует ли 64-разрядная Windows KERNEL64?
-
21-09-2019 - |
Вопрос
Я просматривал некоторые библиотеки с помощью dumpbin и заметил, что все 64-разрядные версии были связаны с KERNEL32.В 64-разрядной Windows нет KERNEL64?Если нет, то почему?
Все мои операционные системы 32-разрядные, поэтому я не могу просто смотреть.Поиск в Google не выдает ничего стоящего, поэтому я подозреваю, что KERNEL64 отсутствует, но мне все еще любопытно, почему это так.
Редактировать:Я нашел это позже, что довольно полезно. Руководство по MSDN для x64
Решение
Это всегда называется kernel32.dll
, даже в 64-разрядной Windows.Это делается по тем же причинам совместимости, что и system32
содержит 64-разрядные двоичные файлы, в то время как syswow64
содержит 32-разрядные двоичные файлы.
Другие советы
В 64-разрядных версиях Windows один из "kernel32.dll" содержит 64-разрядный код, но по-прежнему вызывается kernel32.dll.Это, по меньшей мере, вводит в заблуждение
Надеюсь, что следующие ссылки дадут решение для этого
http://www.howzatt.demon.co.uk/articles/DebuggingInWin64.html
http://www.viva64.com/en/l/0002/
64-разрядная версия Windows предоставляет такую среду "из коробки" и поддерживает 32-разрядные приложения, использующие подсистему "Windows на Windows 64", сокращенно WOW64, которая выполняется в пользовательском режиме и преобразует 32-разрядные вызовы ядра операционной системы в эквивалентный 64-разрядный вызов.Обычно это практически незаметно для вызывающей программы.Windows предоставляет набор 64-разрядных библиотек DLL в %windir%\system32 и эквивалентный набор 32-разрядных библиотек DLL в %windir%\syswow64.Фактически, основная часть двоичных образов в этом каталоге идентична тем же файлам в каталоге system32 при 32-разрядной установке Windows.(Мне кажется досадной проблемой с именованием то, что 64-разрядные библиотеки DLL находятся в system32, а 32-разрядные - в syswow64, но это так)