deviceid 华为手机device id

时间:2023-04-23 04:50/span> 作者:tiger 分类: 经验 浏览:8014 评论:0

继续注册表系列,前面有七讲,感兴趣的同学可以快速浏览“Windows注册表深入解读系列”,今天的关注点是HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\PCI下的内容:

PCI设备的设备ID及实例ID

为什么会关注到PCI设备,主要是当前计算机总线基本上被PCI总线垄断,我们看下Windows下描述的设备树:

Windows下的设备树(从叶子到根)

可以看到ACPI为主干,到PCI后分支到很多类型的设备,甚至USB设备也是挂在PCI总线下的。它们在Windows设备管理器的表现是这样的(依连接列出设备):

设备管理器中展示的设备树

那么具体到第一张图片上的注册表,我们看到的是奇怪的由&符号连接字符串,这个字符串不是凭空来的,它是Windows表示PCI设备的一种形式,&符号把设备ID分为四段,分别是PCI设备的Vendor ID(厂商ID)、Device ID(设备ID)、子系统ID(Subsystem ID)、修订版本ID(Revision ID),这些ID数据存储在PCI设备的PCI配置空间中,系统启动枚举设备时会读出并生成该设备对象,由此生成代表该设备的这串字符,保存在注册表中。厂商ID可向http://pcisig.com/origin/申请分配,感兴趣的同学可以去看一下。我们来解析一下图中的字符串VEN_10DE&DEV_1C8C&SUBSYS_07981028&REV_A1:

  • VEN_10DE 10de可查得是Nvidia公司(即英伟达公司)
  • DEV_1C8C 1c8c从英伟达公司驱动Inf安装文件可知是NVIDIA GeForce GTX 1050 Ti
  • SUBSYS_07981028 07981028 子系统ID一般由设备型号和厂商ID组成:0798是设备型号,1028可查得厂商是Dell(即是Dell公司OEM的设备)
  • REV_A1 a1 表示设备修订版本为a1

接下来我们研究一下设备实例ID:4&283d4f80&0&0008。估计全网讲这个组成的几乎没有吧。它也是由&符号分隔的字符串,每一段都有不同的意义:

  • 4 表示设备在设备树中的层级,从ACPI数起第4级的设备(可参见上面的&34;设备管理器中展示的设备树 &34;那张图)
  • 283d4f80 哈希值,由设备ID字符串根据算法计算得来
  • 0 一般表示设备安装的次数
  • 0008 这个是PCI设备的bus,device,function号中的device,function号组合而成,0008表示是总线上的0号设备功能号是8

今天就讲到这里,欢迎大家留言讨论。

文章评论