相关文章推荐
留胡子的杨桃
·
智库观点丨张志华:现代人工智能的本质、技术和 ...
·
1 月前
·
坐怀不乱的猕猴桃
·
全网首发:DeepStream中,获得视频帧 ...
·
1 年前
·
坚韧的熊猫
·
php代码审计前奏之ctfshow之命令执行 ...
·
1 年前
·
谈吐大方的盒饭
·
这个网站不能被访问 ...
·
1 年前
·
会搭讪的石榴
·
MySQL查询为什么没走索引?这篇文章带你全 ...
·
1 年前
·
Code
›
USB设备驱动程序加载流程 - boysbeer
博客园
usb接口
https://www.cnblogs.com/boysbeer/archive/2012/07/27/2611526.html
道上混的稀饭
1 年前
用户插入USB设备
USB总线(或者是PCI总线,这个不太清楚,反正就是总线来着)识别到插入了USB设备。
总线和USB设备进行通讯,获取USB的硬件ID、产品ID,以及bcdversion。根据这些信息组成设备硬件ID号:vid_xxxx&PID_xxxx&rev_xxxx。
总线根据USB设备的插槽位置,生成一个实例ID,此ID只和插槽映射,同一设备在不同插槽,会生成不同的实例ID;同一设备在同一插槽,实例ID不会改动(不同设备,同一插槽会怎么样就不知道了,知道的请告诉下)。
如下图所示,设备实例路径中包含了3部分的内容,每部分用"\"分离,
第一部分是总线类型,这里是USB,就是USB总线类型
第二部分是设备ID号:vid_1BCF&PID_0501图示中省略了rev_xxxx部分,这个部分可以在“属性-->硬件ID"中看到
第三部分是实例ID:6&10354432&0&8。
根据上面注册表的信息,找到service键和class键的值。
根据service的键值在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services中找到相关子键,子键中包含了USB设备驱动程序的路径,系统加载之。
根据class的键值在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class中找到相关子键,子键中可能包含过滤驱动的信息,有则加载之。
上面就是USB驱动设备加载的基本流程了,也是PNP设备加载的基本流程。
对于兼容ID,多接口设备的概念和相关驱动加载,这里就不继续讲述了,有兴趣的可以看
http://msdn.microsoft.com/zh-cn/library/windows/hardware/gg487473.aspx
推荐文章
留胡子的杨桃
·
智库观点丨张志华:现代人工智能的本质、技术和途径-大数据分析与应用技术国家工程实验室
1 月前
坐怀不乱的猕猴桃
·
全网首发:DeepStream中,获得视频帧数据的代码-阿里云开发者社区
1 年前
坚韧的熊猫
·
php代码审计前奏之ctfshow之命令执行 - FreeBuf网络安全行业门户
1 年前
谈吐大方的盒饭
·
这个网站不能被访问 http://127.0.0.1:8000/hello 使用Flask作为网络框架
1 年前
会搭讪的石榴
·
MySQL查询为什么没走索引?这篇文章带你全面解析_mysql 没有使用索引的量_肥肥技术宅的博客-CSDN博客
1 年前