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

Does GetFullPathName work with relative paths longer than MAX_PATH?

GetFullPathName() says that in order to use paths longer than MAX_PATH (260 characters) I need to prepend the file namespace prefix: \?\. However, the general documentation on file names 的文档指出此前缀不能用于相对路径,因此相对路径的长度始终限制为 260 个字符。这是否意味着没有办法在相对路径长于 MAX_PATH 的情况下使用 GetFullPathName()? (如果是这样,那么我的理解是该函数并不真正支持长路径,除非传递的路径已经是完整路径。)

同意,这很荒谬。原生api没有相对路径的概念,是纯粹的winapi层特性。它可以被解释为一种使函数获得 return 本机路径名的方法。但它没有,我检查过。看起来像 copy/paste 文档错误。

一定要盯着球,当你需要 GetFullPathName() 时,你已经输了。因为 GetCurrentDirectory() 已经受 MAX_PATH 限制。这么长的路径支持已经出了window.

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