不能重新实现这些 API 吗?巨硬新引入的这些 API 需要内核的支持吗?不然为什么在应用层很难模拟新版本的功能呢?
比如我经常看到 InitOnceInitialize() 这个 win7 引入的新 API,从文档上,在 winxp 里面使用 c++ 的全局变量来模拟并不是问题啊。很多软件只是因为使用了这个 API 导致不能在 winxp 里面运行,实在很可惜。
【 在 z16166 的大作中提到: 】
: 没啥用,因为很多模拟不了(帮MS在老的windows上重新实现一遍新Windows引入的API),
: 所以只是load时不弹错误窗,运行时一样失败,而且更加隐蔽,不容易发现问题。
: 类似ELF/macOS的weak symbol,但ELF这个在运行时找不到的话会直接崩掉,而不是返回一个错误值,因为有些人用API都不检查返回值的,非常不利于查问题。所以它这个对于不能模拟的API,最好不要返回E_NOTIMPL、ERROR_NOT_SUPPORTED,直接崩掉最好,不扩散错误,直接fail fast。
: ...................
--
FROM 183.253.146.*