chrome_elf去掉CreateFile

去年在升级Chromium 48的时候,chrome_elf中有个提交特别奇怪:Remove CreateFile code from Chrome_Elf,https://chromium.googlesource.com/chromium/src/+/77c15da03402ef36245c92d2a4e61da6f16ae396。

这个提交去掉了Chromium对CreateFileW这个API的实现。当时很奇怪为什么Google之前需要对Windows系统的标准API CreateFileW 要用自己的CreateFileNTDLL去替代。看相关的代码提交记录、chromium-dev讨论组和code review,都找不到线索。我曾就给Chromium项目负责chrome_elf模块的caitkp@chromium.org发了封邮件询问,也没有收到回复。

最近才意识到Chromium自己实现的CreateFileNTDLL是为了支持XP系统。因为XP系统里,如果路径名长度超过MAX_PATH,CreateFile等API都会失败。解决的办法是使用CreateFileW版本,并且路径前面需要加上\??\前缀。具体请参考https://msdn.microsoft.com/en-us/library/windows/desktop/aa363858(v=vs.85).aspx 和 https://msdn.microsoft.com/en-us/library/windows/desktop/aa365247(v=vs.85).aspx的说明。

因为Chromium 48开始慢慢不支持XP系统了,所以Chromium去掉了对CreateFileW的修复。

发表评论

电子邮件地址不会被公开。 必填项已用*标注