我找到了对日志中具有以下格式的文件的引用:
\\?\C:\Path\path\file.log
我找不到对\?\表示顺序的引用。我相信反斜杠之间的部分是指主机名。
例如,在我的Windows计算机上,以下工作正常:
dir \\?\C:\
并且,同样的结果也很好:
dir \\.\C:\
问题:
答案 0 :(得分:47)
长时间阅读,但如果您在此域中,则值得一读:http://msdn.microsoft.com/en-us/library/windows/desktop/aa365247%28v=vs.85%29.aspx
提取:
Windows API具有许多也具有Unicode版本的函数 允许一个扩展长度的路径,最大总路径长度为 32,767个字符。这种类型的路径由组件组成 用反斜杠分隔,每个都取决于返回的值
lpMaximumComponentLength
的{{1}}参数 function(此值通常为255个字符)。指定一个 扩展长度路径,使用GetVolumeInformation
前缀。例如,"\\?\"
。
和
"\\?\D:\very long path"
前缀也可以用于根据构造的路径 通用命名约定(UNC)。使用指定此类路径 UNC,使用"\\?\"
前缀。例如,"\\?\UNC\"
, 其中"\\?\UNC\server\share"
是计算机的名称,"server"
是其名称 共享文件夹。这些前缀不用作路径的一部分 本身。它们表明路径应该传递给系统 最小的修改,这意味着你不能使用前进 斜杠表示路径分隔符,或表示句点分隔符的句点 当前目录,或表示父目录的双点。 因为您不能将"share"
前缀与相对路径一起使用, 相对路径始终限制为总共"\\?\"
个字符。
答案 1 :(得分:5)
Windows API解析文件I / O的输入字符串。除其他外,它将/
转换为\
,作为将名称转换为NT样式名称或解释.
和..
伪目录的一部分。除了少数例外,Windows API还将路径名限制为260个字符。
\\?\
前缀的documented目的是:
对于文件I / O,路径字符串的“\\?\”前缀告诉Windows API禁用所有字符串解析并将其后面的字符串直接发送到文件系统。
如果基础文件系统支持长路径和文件名,则允许在路径名中使用.
或..
,以及放宽260字符路径名限制。