kernel32.dll, kernel32legacy.dll, api-ms-win-core-sysinfo-l1-2-0.dll
재미있는 글이 있어서 소개해드립니다. ^^
Windows 10, UWP and PInvoke - GetNativeSystemInfo
; http://mtaulty.com/2016/01/11/windows-10-uwp-and-pinvoke-getnativesysteminfo/
윈도우 10이 Phone, Tablet, Desktop, XBox, IoT 환경을 아우르는 바람에 전통적인 kernel32.dll도 그 역할을 신세대에게 그 자리를 내어주는 듯합니다. ^^
일례로 Desktop 버전의 윈도우 10은 kernel32.dll이 정상적으로 구현되어 있지만, 윈도우 폰용 윈도우 10에는 kernel32.dll 자체가 없고 대신 Kernel32Legacy.dll을 발견할 수 있다고 합니다. 하지만, kernel32.dll에 구현되어 있던 GetNativeSystemInfo Win32 API가 Kernel32Legacy.dll에는 없다고!
대신, 2개의 윈도우 10 버전 모두 api-ms-win-core-sysinfo-l1-2-0.dll을 가지고 있으며 그 DLL에는 공통적으로 GetNativeSystemInfo API를 구현하고 있습니다. 따라서, Win32 API를 UWP 앱에서 사용하고 싶다면 다음과 같이 kernel32.dll을 연결하지 말고,
[DllImport("kernel32.dll")]
static extern void GetNativeSystemInfo(ref SYSTEM_INFO lpSystemInfo);
api-ms-win-core-sysinfo-l1-2-0.dll을 연결하는 것이 더 권장되는 것입니다.
[DllImport("api-ms-win-core-sysinfo-l1-2-0.dll")]
static extern void GetNativeSystemInfo(ref SYSTEM_INFO lpSystemInfo);
윈도우 프로그래밍에서 독보적인 위치를 차지하던
kernel32.dll에게 이런 날이 올 줄 누가 알았겠습니까! ^^
[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]