微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么在较新的Windows版本中仍旧支持一些旧的Win16 API?

我最近在MoleBox打包的可执行文件上修复了一些IAT,并且看到它与kernel32函数链接:“_lopen”,“_lwrite”和“_lread”。 本网站声明,这些API的提供与16位版本的Windows的兼容性。 我不喜欢“Win16”应用程序不能在长时间模式下执行(是的 – 我正在运行Win8.1 x64) – 那么这些仍然包含在'kernel32.dll'中的目的是什么?

顺便说一下这些函数甚至不包含在“msdn”库中。

编辑:这似乎也是那些function实际上不是16位! 他们正在堆栈上采取32位参数。

有关在Windows应用程序上可能replacebatch file的问题?

传统的链接器(使用libc5)在Linux内核2.6.25上失败

传统的gcc编译器问题

为什么bmps倒过来存储?

这不是功能可以被16位应用程序调用。 显然他们不能,因为他们生活在32位和64位模块。 重点是让开发人员更容易编译旧程序,而无需重新编写旧程序。

现在,在2015年,并不需要满足那些有16位程序的开发者的需求。 这可能不会再有任何重大的发展。 但如果你倒退20年,那么这是一个真正的问题。 因此,MS包括这些compat拐杖。 而且一旦被包括在内,那么MS可能决定把它们留在那里,以免破坏二进制兼容性。 MS确实竭尽全力避免破坏旧程序。 如果这些功能删除,任何依赖它们的程序都会中断。

微软不会因为“旧”而删除函数。 他们会尽快删除这些功能,但是现在需要更少的工作来保存它们。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐