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 受阻。
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 受阻。