USB设备驱动加载过程

  1. 用户插入USB设备
  2. USB总线(或者是PCI总线,这个不太清楚,反正就是总线来着)识别到插入了USB设备。
  3. 总线和USB设备进行通讯,获取USB的硬件ID、产品ID,以及bcdversion。根据这些信息组成设备硬件ID号:vid_xxxx&PID_xxxx&rev_xxxx。
  4. 总线根据USB设备的插槽位置,生成一个实例ID,此ID只和插槽映射,同一设备在不同插槽,会生成不同的实例ID;同一设备在同一插槽,实例ID不会改动(不同设备,同一插槽会怎么样就不知道了,知道的请告诉下)。
  5. 如下图所示,设备实例路径中包含了3部分的内容,每部分用"\"分离,
    • 第一部分是总线类型,这里是USB,就是USB总线类型
    • 第二部分是设备ID号:vid_1BCF&PID_0501图示中省略了rev_xxxx部分,这个部分可以在“属性-->硬件ID"中看到
    • 第三部分是实例ID:6&10354432&0&8。

  6. 根据总线得到的信息,系统在注册表”HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum“下寻找驱动程序。对于上面的设备,驱动程序信息在注册表路径为:“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB\VID_1BCF&PID_0501\6&10354432&0&8”,如果找不到此路径,就安装驱动程序吧。路径内容如下所示:

  7. 根据上面注册表的信息,找到service键和class键的值。
    • 根据service的键值在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services中找到相关子键,子键中包含了USB设备驱动程序的路径,系统加载之。
    • 根据class的键值在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class中找到相关子键,子键中可能包含过滤驱动的信息,有则加载之。

  8. 上面就是USB驱动设备加载的基本流程了,也是PNP设备加载的基本流程。
  9. 对于兼容ID,多接口设备的概念和相关驱动加载,这里就不继续讲述了,有兴趣的可以看http://msdn.microsoft.com/zh-cn/library/windows/hardware/gg487473.aspx
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值