如何使用'\\?\'前缀处理较长的相对路径?

时间:2019-05-28 15:21:42

标签: winapi

因此,我们都知道Windows程序默认情况下仅限于处理  最大路径长度为260个字符。但是,可以通过在路径前面加上\\?\字符序列来克服此限制。

但是由于某些原因,相对路径无法实现,如MSDN所述:

  

因为不能将\\?\前缀与相对路径一起使用,   相对路径始终限制为总共MAX_PATH个字符。

source

我不太了解Microsoft为何决定禁止相对路径以\\?\为前缀,因此,如果此决定背后有某种合理性,我很高兴听到此消息,因为对我来说,\\?\仅用于完整路径并没有什么意义。

但是,我真正的问题是如何处理此限制:我是否应该简单地在相对路径上调用GetFullPathName()以将其扩展为完整路径,然后添加\\?\前缀,然后传递该前缀到fopen()等的路径,或者建议使用什么方式解决此限制?

1 个答案:

答案 0 :(得分:1)

您不能将\\?\前缀与相对路径一起使用。

当相对路径传递到系统时,它被解析为绝对路径,然后传递到系统。正如source所述:

  

前缀\\:\并不用作路径本身的一部分。他们   指示该路径应该以最小的方式传递给系统   修改,这意味着您不能使用正斜杠   表示路径分隔符,或表示当前的句点   目录,或双点代表父目录。