因此,我们都知道,默认情况下,Windows程序仅限于处理260个字符的最大路径长度。但是,可以通过用\\?\字符序列前缀路径来克服这一限制。
然而,由于某些原因,这在相对路径中是不可能的,MSDN说:
由于不能将
\\?\前缀与相对路径一起使用,因此相对路径总是限制在MAX_PATH字符总数上。
(来源)
我真的不明白为什么微软决定禁止以\\?\为前缀的相对路径,所以如果这个决定背后有某种理由的话,我会很高兴听到这个决定,因为对我来说,\\?\只允许完全路径是没有道理的。
然而,我真正的问题是如何处理这个限制:我是应该简单地在相对路径上调用GetFullPathName(),将其扩展到完全路径,然后添加\\?\前缀,然后将该路径传递给fopen()等,还是建议如何处理这个限制?
发布于 2019-05-29 08:21:28
不能使用带有相对路径的\\?\前缀。
当相对路径被传递到系统时,它被解析为绝对路径,然后传递给系统。正如在来源中提到的
前缀
\\:\不作为路径本身的一部分。它们表示路径应在修改最少的情况下传递给系统,这意味着不能使用正斜杠表示路径分隔符,也不能使用句点表示当前目录,也不能使用双点表示父目录。
https://stackoverflow.com/questions/56345423
复制相似问题