2009-09-01 16 views
17

Stavo guardando alcune librerie con dumpbin e ho notato che tutte le versioni a 64 bit erano collegate a KERNEL32. Non c'è KERNEL64 su Windows 64-bit? Se no, perché?Windows a 64 bit utilizza KERNEL64?

Tutti i miei sistemi operativi sono a 32 bit, quindi non posso solo guardare. Una ricerca su google non rivela nulla di utile, quindi sospetto che non ci sia KERNEL64, ma sono ancora curioso di sapere perché è così.

EDIT: Ho trovato questo più tardi che è piuttosto utile. MSDN guide to x64

+0

Questo è un recupero lontano ma potrebbe essere correlato a quello di Windows L'API è sempre la stessa Il kernel è ancora decisamente a 64 bit. –

risposta

16

Si chiama sempre kernel32.dll, anche su finestre a 64 bit. Questo è per gli stessi motivi di compatibilità che system32 contiene file binari a 64 bit, mentre syswow64 contiene file binari a 32 bit.

+7

* Quali * motivi di compatibilità? –

+1

@Martin Ecco un'ottima risposta: http://stackoverflow.com/questions/949959/why-do-64bit-dlls-go-to-system32-and-32bit-dlls-to-syswow64-on-64bit-windows –

+0

Piuttosto sicuro di mantenere il codice come questo funziona in modalità 16 bit, 32 bit e 64 bit senza modificare il codice: '((BOOL (WINAPI *) (DWORD, DWORD)) GetProcAddress (GetModuleHandle (" kernel32 ")," Beep ")) (1000, 300); '. Abbastanza sicuro che se Microsoft dovesse tornare indietro nel tempo, lo chiamerebbero semplicemente Kernel.dll, per mostrare il costo di cambiare un'interfaccia dopo la pubblicazione. – Dmitry

4

Sulle versioni a 64 bit di Windows uno dei file "kernel32.dll" contiene codice a 64 bit ma è ancora chiamato kernel32.dll. Questo è almeno fuorviante

Speranza i seguenti link daranno la soluzione per questo

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 di Windows fornisce un ambiente del genere "out of the box "e supporta le applicazioni a 32 bit utilizzando il sottosistema" Windows on Windows 64 ", abbreviato in WOW64, che viene eseguito in modalità utente e associa le chiamate a 32 bit al sistema operativo kernel di radice in una chiamata equivalente a 64 bit. Questo è normalmente quasi invisibile al programma chiamante. Windows fornisce un set di DLL a 64 bit in% windir% \ system32 e un set equivalente di DLL a 32 bit in% windir% \ syswow64. In effetti, la maggior parte delle immagini binarie in questa directory sono identiche agli stessi file nella directory system32 su un'installazione di Windows a 32 bit. (Mi sembra un problema di denominazione sfortunato che le DLL a 64 bit vivono in system32 e quelle a 32 bit in syswow64, ma eccolo)

Problemi correlati