최근 MoleBox에서 실행 파일로 포장 된 일부 IAT를 수정했으며 '_lopen', '_lwrite'및 '_lread'와 같이 kernel32 함수와 링크되어 있음을 확인했습니다. 이 site은 해당 API가 16 비트 버전의 Windows와의 호환성을 위해 제공된다고 명시합니다. 나는 'Win16'응용 프로그램을 긴 모드 (예 - Win8.1 x64를 실행 중입니다.)에서 실행할 수 없다는 것을 안다. 그래서 'kernel32.dll'에 여전히 포함될 목적은 무엇입니까?최신 Win16 API 중 일부가 최신 Windows 버전에서 계속 지원되는 이유는 무엇입니까?
그런데이 기능은 'msdn'라이브러리에도 포함되어 있지 않습니다.
편집 : 또한 이러한 기능이 실제로 16 비트가 아닌 것으로 보입니다! 스택에 32 비트 매개 변수를 사용하고 있습니다.
물론 그들은 16 비트가 아닙니다. 'kernel32.dll'은 32 또는 64 비트 모듈입니다. 또한 함수가 32 비트 매개 변수를 사용한다고해서 32 비트가되지는 않습니다. –
[Raymond Chen의 블로그] (http://blogs.msdn.com//b/oldnewthing)에서 아카이브를 읽는 데 시간을 할애합니다. 여기서 그는 오래 유지되는 호환성 코드에 대해 자주 논의합니다. –
주된 이유는 분명히 그들을 포함하지 않고 프로그래머가 기존의 프로그램을 다시 작성하도록 강요하지 않았기 때문입니다. 32 비트로 구현하는 것은 쉽지 않았습니다. –