基于 Windows NT 的操作系统如何寻址设备?

基于 Windows NT 的操作系统如何寻址设备?

我对这样的符号感到困惑

多(0)磁盘(0)rdisk(0)分区(1)\...

\设备\硬盘1\DR1
\设备\视频0

我仅在基于 Windows NT 的操作系统(例如 Windows XP 和 Windows 7)环境中看到这些地址。这些地址是什么意思,它们如何用来指代硬盘、图形适配器、人机接口设备(键盘、鼠标等)、网络适配器和其他硬件?

答案1

与普遍看法相反,Windows 内核有一个根文件(“文件”)系统。在 *nix 中,根是/,在 Windows 中是\。不过,Win32 子系统不会公开它。您可以使用程序运行对象

一些(可能熟悉的) NT 设备名称(MN只是整数):

  • \Device\HarddiskM\DRN:磁盘
  • \Device\HarddiskVolumeN:分区
  • \Device\CdRomN:光盘驱动器
  • \Device\KeyboardClassN:键盘
  • \Device\MountPointManager:不是设备,但跟踪存储设备
  • \Device\Null:消耗数据并输出空值(零)

\Device\HardDisk1\DR1是个真的磁盘名称到 Windows并且multi(0)disk(0)rdisk(0)partition(1)是遗产——这与如何视窗指的是设备,但如何引导加载程序指的是磁盘。它是如何工作的,我不知道(本页解释了其中的部分内容),但这并不是 Windows 在启动后真正关心的事情。

较新版本的 Windows 使用启动配置数据 (BCD),这是一种BCD格式与注册表类似的文件,而不是Boot.ini。它通常使用唯一标识符 (GUID) 来引用卷,而不是驱动器号或文件系统路径,这也是较新版本的 Windows 所使用的。

答案2

第一行来自 Windows XP 或 Server 2003 的 boot.ini 文件,位于系统驱动器的根目录中,该行已被 Windows Vista、Windows 7 和 Server 2008 中的 BCD(启动配置数据存储)所淘汰。它告诉 Windows 去哪里(哪个磁盘和分区)查找启动所需的系统文件。

这里详细解释“multi”和“rdisk”。其余的意思是查看磁盘 0(它们从 0 开始向上移动,您可以在磁盘管理器中看到它们的编号),分区 1(与磁盘不同,它们从 1 开始编号并向上移动)。

http://support.microsoft.com/kb/102873

就设备枚举而言,它是一个非常复杂的编程主题,其解释如下这里如果你想让你的头爆炸。你给出的格式是如何在注册表中将设备寻址为硬件 ID。

实际上,您可以查看此注册表项

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum

为了匹配任何错误,您可以在其中一个子键中获得“硬件ID”值,以准确确定错误可能涉及哪个设备。

相关内容