2010-04-15 271 views
6

使用GetModuleFileNameEx查詢正在運行的進程的映像路徑時,某些進程的映像路徑以「\ ?? \」開頭。例如,當大多數進程啓動「C:\ WINDOWS」時,某些進程啓動「\ ?? \ C:\ WINDOWS」。Windows路徑上的前導「 ?? 」是什麼意思?

在Windows路徑上,\ \ \意味着什麼?

回答

7

這是一個Unicode擴展長度路徑名 - 請參閱MSDN中的Naming Files, Paths, and Namespaces(「最大路徑長度限制」部分)。

(順便說一句,你的意思\\?\而非\??\?)

+0

排序,在實踐中,但這並沒有真正解釋多少。將完全限定的Windows路徑轉換爲NT路徑,方法是在驅動器號前添加「\ ?? \」作爲前綴,並將UNC路徑的前綴「\\」替換爲「\ ?? \ UNC \」。對於Unicode「\\?\」路徑,它只是用「\ ?? \」替換「\\?\」前綴。這是對象管理器在對象命名空間中的虛擬「DosDevices」目錄,它首先搜索「\ Sessions \ 0 \ DosDevices \\ [Logon_AuthenticationId]」中定義的本地登錄會話設備,然後搜索「\全球??」。 – eryksun 2017-09-08 01:46:12

-1

2問號盤符前,即\ ?? \ C:意味着它在內核模式運行。 (在PICK或多值操作系統中,我們稱這個級別爲「監控模式」,其中一條指令可以直接指向內存或執行磁盤IO)。內核模式在本文中有更好的解釋: What do "\\.\", "\??\", "\\?\", "\\" mean? symbolhound dot com

放置它的另一種方式;用戶模式耗盡用戶/窗口的工作區,而核心模式使用所有人都共用的內存空間,這意味着您可能會停止計算機而不是僅中止一個Windows窗口/選項卡。

我把它留給你搜索(引擎)內核模式

+0

許多本地API以內核和用戶模式存在(分別爲ntoskrnl.exe和ntdll.dll)。所以你的說法是錯誤的。 – 0xC0000022L 2016-06-15 07:11:40

相關問題