2009-09-01 5 views
17

Ich war bei einigen Bibliotheken mit dumpbin suchen, und ich bemerkte, dass alle 64-Bit-Versionen zu KERNEL32 verbunden waren. Gibt es KERNEL64 auf 64-Bit-Windows? Wenn nicht, warum?Verwendet 64-Bit-Windows KERNEL64?

Alle meine Betriebssysteme sind 32-bit, damit ich sehen nicht nur kann. Eine Google-Suche bringt nichts, was sich lohnt, also vermute ich, dass es keinen KERNEL64 gibt, aber ich bin immer noch neugierig, warum das so ist.

EDIT: Ich fand diese später was ziemlich nützlich ist. MSDN guide to x64

+0

Dies ist ein weit hergeholt, aber es könnte damit das Windows verwandt werden API ist immer noch gleich. Der Kernel ist immer noch definitiv 64-Bit. –

Antwort

16

Es heißt immer kernel32.dll, sogar auf 64-Bit-Fenstern. Dies ist aus den gleichen Gründen der Kompatibilität, die system32 64-Bit-Binärdateien enthalten, während syswow64 32-Bit-Binärdateien enthält.

+7

* Was * Kompatibilitätsgründe? –

+1

@ Martin Hier ist eine große Antwort: http://stackoverflow.com/questions/949959/why-do-64bit-dlls-go-to-system32-and-32bit-dlls-to-syswow64-on-64bit-windows –

+0

Ziemlich sicher ist es, Code wie diesen in 16bit-, 32bit- und 64-Bit-Modi arbeiten zu lassen, ohne Code zu ändern: '((BOOL (WINAPI *) (DWORD, DWORD)) GetProcAddress (GetModuleHandle (" kernel32 ")," Beep ")) (1000, 300); '. Ziemlich sicher, wenn Microsoft in der Zeit zurückgehen würde, würden sie es nur Kernel.dll nennen, zeigt die Kosten an, eine Schnittstelle nach der Veröffentlichung zu ändern. – Dmitry

4

Auf den 64-Bit-Versionen von Windows eine der "kernel32.dll" s enthält 64-Bit-Code, ist aber nach wie vor kernel32.dll genannt. Dies ist zumindest irreführend

hoffen, dass die folgenden Links finden die Lösung für diese

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-Bit-Windows bietet eine solche Umgebung „aus dem geben Box "und unterstützt 32-Bit-Anwendungen mit dem Untersystem Windows unter Windows 64, abgekürzt WOW64, das im Benutzermodus ausgeführt wird und die 32-Bit-Aufrufe dem Betriebssystem zuordnet Stammkernel in einen äquivalenten 64-Bit-Aufruf. Dies ist normalerweise für das aufrufende Programm fast unsichtbar. Windows stellt eine Reihe von 64-Bit-DLLs in% windir% \ system32 und eine entsprechende Menge von 32-Bit-DLLs in% windir% \ syswow64 bereit. Tatsächlich ist der Großteil der Binärbilder in diesem Verzeichnis mit den gleichen Dateien im Verzeichnis system32 auf einer 32-Bit-Windows-Installation identisch. (Es scheint mir ein unglückliches Namensgebungsproblem, dass die 64-Bit-DLLs in System32 und die 32-Bit-DLLs in Syswow64 leben, aber da ist es)