簡體   English   中英

操作系統如何獲取硬件ID

[英]How Operation System obtain Hardware ID

我最近閱讀了有關 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 設備通信。

它( os )如何獲取設備的硬件 ID?

是否有某種協議可以與硬件進行通信,其工作方式如下:

  • 操作系統發送一個信號(或 USB 格式的消息),主體為“我想知道硬件 ID”
  • 硬件必須使用諸如“我的硬件 ID 為 xxx”之類的正文向操作系統響應此消息

如果有這樣的協議,請告訴我這種協議的“標准”。

在大多數現代計算機上,每個 USB 集線器都連接到一個 xHCI controller( https://wiki.osdev.org/EXtensible_Host_Controller_Interface )。 在啟動時,BIOS 將在 RAM 中構建 ACPI 表,操作系統將在常規位置查找這些表。 一旦操作系統找到這些表,它將查看每個條目以確定哪些設備插入了計算機,包括 xHCI 控制器。 如 osdev.org 所述

所有 xHCI 控制器的 Class ID 為 0x0C,Sublcas ID 為 0x03,接口值為 0x30。 該器件的配置空間將包含兩個基地址寄存器:BAR0 和 BAR1。 這兩個 32 位地址字段組合創建一個 64 位地址,該地址指向 controller 的 memory 映射寄存器的基地址。

然后使用 xHCI 的 memory 映射寄存器向 USB 設備發送命令,包括獲取 USB 設備的設備描述符的命令。 https 上的文檔是 xHCI 的規范: . 因此,如果您想真正了解它是如何在幕后工作的,那么這是一個值得一看的好地方。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM