什么意思? 当前置到文件路径时

我在一个日志中找到了一个文件的引用,其格式如下:

\\?\C:\Path\path\file.log

我找不到一个参考的顺序是什么?手段。我相信反斜杠之间的部分指的是一个主机名。

例如,在我的 Windows 电脑上,以下工作正常:

dir \\?\C:\

而且,结果也是一样的:

dir \\.\C:\

问题:

  1. 在这种特定的路径格式中,是否有提到问号的含义?
  2. 什么可以生成这种格式的文件路径?
76643 次浏览

阅读时间很长,但如果你在这个领域,值得一读: http://msdn.microsoft.com/en-us/library/windows/desktop/aa365247%28v=vs.85%29.aspx

摘录:

WindowsAPI 有许多函数也有 Unicode 版本 允许扩展长度路径的最大总路径长度为 32,767个字符。此类路径由组件组成 中返回的值 GetVolumeInformationlpMaximumComponentLength参数 函数(此值通常为255个字符) 扩展长度路径,使用 "\\?\"前缀, "\\?\D:\very long path".

以及:

"\\?\"前缀也可以与根据以下方法构造的路径一起使用 通用变数命名原则(UNC) UNC,使用 "\\?\UNC\"前缀, 其中 "server"是计算机的名称,而 "share"是 这些前缀不作为路径的一部分使用 它们指示应该将路径传递给系统 最小限度的修改,这意味着您不能使用正向 斜杠表示路径分隔符,或者句点表示 工作目录,或双点代表父目录。 因为不能对相对路径使用 "\\?\"前缀, 相对路径总是被限制为 MAX_PATH字符的总数。

Windows API 解析文件 I/O 的输入字符串,除此之外,它将 /转换为 \,作为将名称转换为 NT 样式名称的一部分,或者解释 ...伪目录。除了少数例外,WindowsAPI 还将路径名限制为260个字符。

\\?\前缀的 记录在案用途是:

对于文件 I/O,“ ?”路径字符串的前缀告诉 Windows API 禁用所有字符串解析,并将后面的字符串直接发送到文件系统。

除其他外,这允许在路径名(如 ...)中使用其他保留的符号。选择不进行任何转换,系统不再需要维护内部缓冲区,而且也可以取消任意的260个字符的限制(只要底层文件系统支持它)。注意,这是 没有\\?\前缀的用途,而不是推论,即使前缀主要用于它的推论。