簡體   English   中英

\\\\?\\ 在文件路徑前面是什么意思

[英]What does \\?\ mean when prepended to a file path

我在具有以下格式的日志中找到了對文件的引用:

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

我找不到對 \\?\\ 序列含義的引用。 我相信反斜杠之間的部分是指主機名。

例如,在我的 Windows 計算機上,以下工作正常:

dir \\?\C:\

而且,同樣的結果就好了:

dir \\.\C:\

問題:

  1. 問號在此特定路徑格式中的含義是否有參考?
  2. 什么可能生成這種格式的文件路徑?

長篇閱讀,但如果您在此域中,則值得一讀: 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 個字符的路徑名限制,如果底層文件系統支持長路徑和文件名。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM