根据MSDN(关于lpFileName参数):
“在此函数的ANSI版本中,名称限制为MAX_PATH字符。要将此限制扩展到32,767个宽字符,请调用函数的Unicode版本并在路径前面添加"\?\"。有关详细信息,请参阅命名文件。”
如果我理解正确,为了使用带有
GetFullPathNameW
的扩展长度文件路径,我需要指定一个带有\\?\
前缀附加的路径。由于\\?\
前缀仅在卷字母或UNC路径之前有效,这意味着该API无法用于解析相对于当前目录的路径的完整名称。如果是这样,是否有另一个API可以用来解析像
..\somedir\somefile.txt
这样的文件路径的完整名称,如果结果名称的长度超过MAX_PATH
?如果没有,我能否将GetCurrentDirectory
与相对路径(\\?\C:\my\cwd\..\somedir\somefile.txt
)组合使用,并将其与GetFullPathNameW
一起使用,还是我需要自己处理所有的文件路径解析?
\\?\C:\my\cwd\..\somedir\somefile.txt
还是\\?\..\somedir\somefile.txt
,所以我都尝试了。第一个正确解析为\\?\C:\my\somedir\somefile.txt
(这回答了我的部分问题),而第二个错误解析为\\?\somedir\somefile.txt
。 - Charles Grunwald