什么\\?\意味着当前面的文件path

我在日志中find了对以下格式文件的引用:

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

我无法find\“\”的顺序是什么意思。 我相信反斜杠之间的部分是指主机名。

例如,在我的Windows电脑上,以下工作就好了:

 dir \\?\C:\ 

而且,同样的结果也很好:

 dir \\.\C:\ 

问题:

  1. 在这种特定的path格式中是否提到了问号的含义?
  2. 什么可能以这种格式生成文件path?

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

提取:

Windows API有许多功能,也有Unicode版本允许扩展长度路径的最大总路径长度为32,767个字符。 此类路径由用反斜杠分隔的组件组成,每个组件由GetVolumeInformation函数的lpMaximumComponentLength参数(此值通常为255个字符)中返回的值组成。 要指定扩展路径,请使用"\\?\"前缀。 例如, "\\?\D:\very long path"

和:

"\\?\"前缀也可以用于根据通用命名约定(UNC)构建的路径。 要使用UNC指定这样的路径,请使用"\\?\UNC\"前缀。 例如, "\\?\UNC\server\share" ,其中"server"是计算机的名称, "share"是共享文件夹的名称。 这些前缀不被用作路径本身的一部分。 它们表示应该通过最小的修改将路径传递给系统,这意味着您不能使用正斜杠来表示路径分隔符,或者表示当前目录的句点,或者使用双点来表示父目录。 因为不能使用相对路径的"\\?\"前缀,所以相对路径始终限制为总共MAX_PATH字符。

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

记录的\\?\前缀的目的是:

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

这允许使用. ..在路径名称中,以及如果底层文件系统支持较大的路径和文件名称,则解除260个字符的路径名称限制。