【问题标题】:What does a leading "\??\" on a windows path mean? [duplicate]Windows 路径上的前导“\??\”是什么意思? [复制]
【发布时间】:2011-02-08 07:02:02
【问题描述】:

在使用GetModuleFileNameEx查询正在运行的进程的镜像路径时,有些进程的镜像路径以“\??\”开头。例如,虽然大多数进程启动“C:\WINDOWS”,但有些进程启动“\??\C:\WINDOWS”。

Windows 路径上的前导 \??\ 是什么意思?

【问题讨论】:

    标签: windows winapi path


    【解决方案1】:

    这是一个 Unicode 扩展长度路径名 - 请参阅 MSDN 中的 Naming Files, Paths, and Namespaces(“最大路径长度限制”部分)。

    (顺便问一下,你是说\\?\而不是\??\?)

    【讨论】:

    • 在实践中有点像,但这并不能解释太多。完全限定的 Windows 路径通过在它们前面加上“\??\”作为驱动器号前缀并将前导“\\”替换为“\??\UNC\”作为 UNC 路径来转换为 NT 路径。对于 Unicode "\\?\" 路径,它只是将 "\\?\" 前缀替换为 "\??\"。这是对象命名空间中对象管理器的虚拟“DosDevices”目录,它首先搜索在“\Sessions\0\DosDevices\[Logon_AuthenticationId]”中定义的本地登录会话设备,然后在“\Global ??”。
    【解决方案2】:

    盘符前2个问号,即\??\c: 表示运行在内核模式。 (在 PICK 或多值操作系统中,我们将此级别称为“监控模式”,其中指令可以直接寻址内存或执行磁盘 IO。)内核模式在这篇文章中得到了更好的解释: What do "\\.\", "\??\", "\\?\", "\\" mean? 由 symbolhound dot com 所指向的

    另一种说法;用户模式用尽了用户/窗口的工作空间,而内核模式使用每个人都共有的内存空间,这意味着您可能会停止机器而不是仅中止一个 Windows 窗口/选项卡。

    我留给你搜索(引擎)内核模式

    【讨论】:

    • 许多原生 API 存在于内核和用户模式(分别为 ntoskrnl.exe 和 ntdll.dll)。所以你的说法是错误的。
    猜你喜欢
    • 2013-11-08
    • 2018-09-08
    • 2018-02-11
    • 2016-10-17
    • 2022-09-28
    • 1970-01-01
    相关资源
    最近更新 更多