有没有人熟悉 Windows H:35\ 中驱动器号的这种表示法?

Mic*_*eyn 30 windows windows-10

Windows 10 中的资源监视器向我展示了此语法,用于没有驱动器号但安装到 C 驱动器上的目录的驱动器。它在资源监视器的磁盘活动下显示为: H:35\somedir\blahblah

当然,尝试在此路径名下访问它会给出无效路径名的错误。是什么意思H:35

har*_*ymc 37

此语法毫无意义,与一些可追溯到 Windows 7 的晦涩资源监视器错误有关。

关于这种奇怪的语法有多个问题,但没有答案:

  • 对于不点击链接的任何人:似乎没有一个人对这个问题有更好的答案。他们都只是说[很奇怪,是一个已知的问题。您得到的最接近答案是说它与安装的卷有关,例如驱动器实际上是另一个驱动器上的驱动器或文件夹。但这并不是确定的。 (16认同)

Ben*_*n N 7

这是错误的查找和替换的结果。当已知至少 10 个卷时,无论当前有多少可用卷或是否有任何卷都安装在目录中,都会出现该错误。

资源监视器理解文件路径的“原始”方式涉及对象管理器名称,例如\Device\HarddiskVolume6\path\to\file.txt. 这些名称的设备/卷部分不是那么用户友好,因此资源监视器尝试将卷部分转换为“DOS 设备”,即带有冒号的驱动器号。它的部分初始化,特别是 中的WcdDiskMonitor__UpdateDrives函数wdc.dll,是使用GetLogicalDriveStringsQueryDosDevice函数构建对象管理器名称和 DOS 设备的表。现在在我的计算机上,该表如下所示:

DOS设备 对象管理器名称
C: \Device\HarddiskVolume6
乙: \Device\HarddiskVolume10

较低的数字被各种没有驱动器号的 OEM 分区占用。这将是重要的。数字 7 到 9 未分配,因为我创建然后删除了一些卷。

WdcDiskMonitor__SetFileNameWdcDiskMonitor__DeviceNameToDosName尽可能美化文件路径,这涉及查询 DOS 设备表以在可能的情况下用 DOS 设备替换对象管理器名称。仅使用这些 DOS 设备,我的 E 驱动器上的磁盘活动显示得很好,因为它\Device\HarddiskVolume10被标识为具有指定驱动器号的卷并替换为E:. E 驱动器上的路径不以 开头\Device\HarddiskVolume6,因此C:不会被替换。

但是如果我使用 egmountvol为卷 1 分配一个驱动器号,DOS 设备表看起来像这样:

DOS设备 对象管理器名称
回复: \Device\HarddiskVolume1
C: \Device\HarddiskVolume6
乙: \Device\HarddiskVolume10

资源监视器现在注意到例如\Device\HarddiskVolume10\numbers.txt用字母开始\Device\HarddiskVolume1,并替换只是字符串的开始用R:,不考虑0,留下R:0\numbers.txt作为显示器的路径:

E 上的活动显示在 R:0 下

为了回答如何确定这个虚假驱动器规范的真正含义的问题,我们可以使用WinObj探索对象管理器命名空间。打开GLOBAL??目录并找到名称与驱动器号匹配的条目(暂时忽略后面的数字),例如R:. 注意它的符号链接目标,例如\Device\HarddiskVolume1。将来自 Resource Monitor 的额外编号附加到该编号,重新构成对象管理器名称,例如\Device\HarddiskVolume10. 按符号链接目标对列表进行排序,并找到链接到此对象管理器名称的名称。如果其中之一是驱动器号,例如E:,这就是资源监视器正在谈论的卷。

R = HarddiskVolume1,E = HarddiskVolume10

否则,查找其名称开头的一个Volume{,并与输出交叉引用它mountvol找到一个更熟悉的前瞻性挂载点。