以下符号表示什么意思:\\?\c:\ 是什么意思?

以下符号表示什么意思:\\?\c:\ 是什么意思?

我记得听到有人提到有关取消引用路径的事情,但没有解释取消引用,而且我不知道它是什么。

答案1

这是什么\\?\c:\意思?

第一部分\\?\称为扩展长度路径前缀。它用于绕过 Windows API 在最大路径长度方面的限制:

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

例如,如果文件系统支持大路径和文件名,则可以超出 Windows API 强制执行的 MAX_PATH 限制。

第二部分c:\是对驱动器 c: 根路径的引用。

最大路径长度限制

在 Windows API 中(以下段落中讨论的一些例外),路径的最大长度为 MAX_PATH,定义为 260 个字符。

...

Windows API 中有许多函数也有 Unicode 版本,允许扩展路径长度,最大路径总长度为 32,767 个字符。此类路径由反斜杠分隔的组件组成,每个组件的长度不超过lpMaximumComponentLength函数参数中返回的值GetVolumeInformation(该值通常为 255 个字符)。

要指定扩展长度的路径,请使用“\\?\”前缀。例如,“\\?\D:\very long path”。

注意:最大路径长度 32,767 个字符是近似值,因为系统在运行时可能会将“\\?\”前缀扩展为更长的字符串,并且此扩展适用于总长度。

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

来源命名文件、路径和命名空间

答案2

这是一个延长长度路径. 参见MSDN:命名文件、路径和命名空间

在 Windows API 中(以下段落中讨论了某些例外),路径的最大长度为 MAX_PATH,定义为 260 个字符。[...]

Windows API 有许多函数也有 Unicode 版本,允许扩展长度路径,最大路径总长度为 32,767 个字符。[...] 要指定扩展长度路径,请使用前缀"\\?\"。例如,"\\?\D:\very long path"

基本上,\\?\告诉 Windows API 将路径直接传递给文件系统,而无需进一步操作。除了扩展可用长度外,它还禁用到的自动转换/\还允许您使用保留的文件名...。有关详细信息,请参阅上面链接的文章。

相关内容