2009-09-01 4 views
17

나는 dumpbin을 가진 몇몇 라이브러리를보고 있었고 모든 64 비트 버전이 KERNEL32에 링크되어 있음을 발견했습니다. 64 비트 Windows에 KERNEL64가 있습니까? 그렇지 않다면, 왜?64 비트 Windows에서 KERNEL64를 사용합니까?

제 운영 체제는 모두 32 비트이므로 볼 수만 있습니다. 구글 검색은 아무것도 가치가 없기 때문에 아무 KERNEL64도 없다고 생각하지만 여전히 이것이 왜 궁금합니다.

편집 : 나중에 꽤 유용하다는 것을 발견했습니다. MSDN guide to x64

+0

이것은 상당히 가져 오는 것이지만 Windows와 관련 될 수 있습니다 API는 여전히 동일합니다. 커널은 여전히 ​​64 비트입니다. –

답변

16

64 비트 창에서도 항상 kernel32.dll이라고합니다. 이는 system32이 64 비트 바이너리를 포함하는 것과 동일한 호환성 이유이며, syswow64은 32 비트 바이너리를 포함합니다.

+7

* * 호환성 이유는 무엇입니까? –

+1

@Martin 다음은 유용한 답변입니다. http://stackoverflow.com/questions/949959/why-do-64bit-dlls-go-to-system32-and-32bit-dlls-to-syswow64-on-64bit-windows –

+0

이 코드를 16 비트, 32 비트 및 64 비트 모드에서 코드를 변경하지 않고 유지하는 것이 확실합니다. ((BOOL (WINAPI *) (DWORD, DWORD)) GetProcAddress (GetModuleHandle ("kernel32"), "Beep"))) 1000, 300); Microsoft가 시간을 거슬러 올라간다면 Kernel.dll이라는 이름을 지정하고 게시 후 인터페이스를 변경하는 비용을 표시합니다. – Dmitry

4

Windows의 64 비트 버전에서 "kernel32.dll"중 하나는 64 비트 코드를 포함하지만 여전히 kernel32.dll이라고합니다. 이것은 다음과 같은 링크에 대한 해결책을 줄 것이다 적어도

희망 오해의 소지가이

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

Windows가에서 이러한 환경 "을 제공하는 64 비트 박스 "를 지원하며 사용자 모드에서 실행되고 32 비트 호출을 운영 체제에 매핑하는 WOW64로 약술 된 'Windows on Windows 64'하위 시스템을 사용하여 32 비트 응용 프로그램을 지원합니다 줄기 커널을 동등한 64 비트 호출로 변환합니다. 이것은 일반적으로 호출 프로그램에서 거의 볼 수 없습니다. Windows는 % windir % \ system32에 64 비트 DLL 세트를 제공하고 % windir % \ syswow64에 32 비트 DLL 세트를 제공합니다. 실제로이 디렉토리에있는 바이너리 이미지의 대부분은 32 비트 Windows 설치의 system32 디렉토리에있는 동일한 파일과 동일합니다. (필자는 64 비트 DLL이 system32에 살고 32 비트 DLL은 syswow64에 살지만, 그곳에는 불행한 이름 지정 문제가있는 것 같습니다.)

관련 문제