[英]What does Windows mean by a device that is "on the device path for a special file (such as the paging file, hibernate file, or crash dump file)"?
[英]What does \\?\ mean when prepended to a file path
我在具有以下格式的日志中找到了對文件的引用:
\\?\C:\Path\path\file.log
我找不到對 \\?\\ 序列含義的引用。 我相信反斜杠之間的部分是指主機名。
例如,在我的 Windows 計算機上,以下工作正常:
dir \\?\C:\
而且,同樣的結果就好了:
dir \\.\C:\
問題:
長篇閱讀,但如果您在此域中,則值得一讀: 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.