【问题标题】:How Operation System obtain Hardware ID操作系统如何获取硬件ID
【发布时间】:2021-05-15 22:46:10
【问题描述】:

我最近阅读了有关 Windows-Driver-Model 的文档,其中一章说:

Before a driver is installed for a new device, the bus or hub driver to which the device is connected assigns a hardware identifier (ID) to the device.

但是如何??

例如,操作系统想要与 USB 设备通信。

它(操作系统)如何获取设备的hardware-id?

是否有某种协议可以与类似的硬件进行通信:

  • 操作系统发送一个信号(或 USB 格式的消息),其正文为“我想知道硬件 ID”
  • 硬件必须使用诸如“我的硬件 ID 为 xxx”之类的正文向操作系统响应此消息

如果有这样的协议,请告诉我这种协议的“标准”。

【问题讨论】:

    标签: windows operating-system driver wdm


    【解决方案1】:

    在大多数现代计算机上,每个 USB 集线器都连接到一个 xHCI 控制器 (https://wiki.osdev.org/EXtensible_Host_Controller_Interface)。在启动时,BIOS 将在 RAM 中构建 ACPI 表,操作系统将在常规位置查找这些表。一旦操作系统找到这些表,它将查看每个条目以确定哪些设备插入了计算机,包括 xHCI 控制器。如 osdev.org 所述

    所有 xHCI 控制器的 Class ID 为 0x0C,Sublcas ID 为 0x03,Interface 值为 0x30。该器件的配置空间将包含两个基地址寄存器:BAR0 和 BAR1。这两个 32 位地址字段组合起来创建一个 64 位地址,该地址指向控制器的内存映射寄存器的基地址。

    然后使用 xHCI 的内存映射寄存器向 USB 设备发送命令,包括获取 USB 设备的设备描述符的命令。 https://www.intel.com/content/dam/www/public/us/en/documents/technical-specifications/extensible-host-controler-interface-usb-xhci.pdf 上的文档是 xHCI 的规范。因此,如果您想真正了解它是如何工作的,那么这里是一个值得关注的好地方。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-19
      • 2013-11-11
      • 1970-01-01
      • 1970-01-01
      • 2020-08-25
      • 2018-09-19
      相关资源
      最近更新 更多