GetFullPathName是否适用于长于MAX_PATH的相对路径?

时间:2015-01-25 14:07:44

标签: winapi

GetFullPathName()的文档说明为了使用长度超过MAX_PATH(260个字符)的路径,我需要添加文件命名空间前缀:\\?\。但是,the general documentation on file names表示此前缀不能与相对路径一起使用,因此相对路径的长度始终限制为260个字符。这是否意味着无法使用GetFullPathName()的相对路径长于MAX_PATH? (如果是这样,那么我的理解是该函数并不真正支持长路径,除非传递的路径已经是完整路径。)

1 个答案:

答案 0 :(得分:8)

同意,这是荒谬的。原生api没有相对路径的概念,它是纯粹的winapi层功能。它可以被解释为使函数返回本机路径名的一种方法。但它没有,我查了一下。看起来像是复制/粘贴doc bug。

当你需要GetFullPathName()时,请注意球,然后你已经输了。因为GetCurrentDirectory()已经受到MAX_PATH限制。所以很长的路径支持已经不在窗口了。

通用建议是永远依赖于相对路径,即使您不关心长路径支持。事故太多了。如果你想编写一个预期从命令行驱动的简单控制台模式应用程序,那么唯一合理的选择退出。然后你不在乎,因为命令行解释器是MAX_PATH阻塞的。