因此,我们都知道Windows程序默认情况下仅限于处理
最大路径长度为260个字符。但是,可以通过在路径前面加上\\?\
字符序列来克服此限制。
但是由于某些原因,相对路径无法实现,如MSDN所述:
因为不能将
\\?\
前缀与相对路径一起使用, 相对路径始终限制为总共MAX_PATH
个字符。
(source)
我不太了解Microsoft为何决定禁止相对路径以\\?\
为前缀,因此,如果此决定背后有某种合理性,我很高兴听到此消息,因为对我来说,\\?\
仅用于完整路径并没有什么意义。
但是,我真正的问题是如何处理此限制:我是否应该简单地在相对路径上调用GetFullPathName()
以将其扩展为完整路径,然后添加\\?\
前缀,然后传递该前缀到fopen()
等的路径,或者建议使用什么方式解决此限制?
答案 0 :(得分:1)
您不能将\\?\
前缀与相对路径一起使用。
当相对路径传递到系统时,它被解析为绝对路径,然后传递到系统。正如source所述:
前缀
\\:\
并不用作路径本身的一部分。他们 指示该路径应该以最小的方式传递给系统 修改,这意味着您不能使用正斜杠 表示路径分隔符,或表示当前的句点 目录,或双点代表父目录。