首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >操作系统如何获取硬件ID

操作系统如何获取硬件ID
EN

Stack Overflow用户
提问于 2021-02-12 06:56:41
回答 1查看 78关注 0票数 0

我最近读到了有关Windows驱动程序模型的文档,其中一章写道:

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设备进行通信。

它(操作系统)如何获得设备的硬件id?

是否有某种协议可以与硬件进行通信,比如:

操作系统发送一个信号(或USB格式的消息),其正文为“我想知道hardware-id"

  • The硬件必须对此消息作出响应”,其主体为"My hardware is xxx"

如果有这样的协议,你能告诉我这种协议的“标准”吗?

EN

回答 1

Stack Overflow用户

发布于 2021-02-12 16:39:14

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

所有xHCI控制器的类ID为0x0C,Sublcass ID为0x03,接口值为0x30。此设备的配置空间将包含两个基本地址寄存器: BAR0和BAR1。这两个32位地址字段组合在一起创建一个64位地址,该地址指向控制器的内存映射寄存器的基本地址。

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66167522

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档