USB设备驱动程序加载流程

转载 2015年11月19日 11:34:43

  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不会改动(不同设备,同一插槽会怎么样就不知道了,知道的请告诉下)。
  1. 如下图所示,设备实例路径中包含了3部分的内容,每部分用"\"分离,
  2. 第一部分是总线类型,这里是USB,就是USB总线类型
  • 第二部分是设备ID号:vid_1BCF&PID_0501图示中省略了rev_xxxx部分,这个部分可以在“属性-->硬件ID"中看到
  • 第三部分是实例ID:6&10354432&0&8。

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

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

  1. 上面就是USB驱动设备加载的基本流程了,也是PNP设备加载的基本流程。
  2. 对于兼容ID,多接口设备的概念和相关驱动加载,这里就不继续讲述了,有兴趣的可以看http://msdn.microsoft.com/zh-cn/library/windows/hardware/gg487473.aspx


From:http://www.cnblogs.com/boysbeer/archive/2012/07/27/2611526.html

Windows内核学习笔记(四)-- 编写程序手动加载驱动程序

#include #include #include #include #define DRIVER_NAME "HelloDriver"#define DRIVER_PATH "..//...
  • vangoals
  • vangoals
  • 2009年07月23日 09:58
  • 4226

USB识别,ID实例路径获取

  • 2013年08月27日 08:45
  • 31.66MB
  • 下载

guid获取设备路径

  • 2013年03月27日 10:23
  • 5KB
  • 下载

USB设备驱动加载过程

本文 用户插入USB设备USB总线(或者是PCI总线,这个不太清楚,反正就是总线来着)识别到插入了USB设备。总线和USB设备进行通讯,获取USB的硬件ID、产品ID,以及bcdversio...
  • wupangzi
  • wupangzi
  • 2014年08月26日 14:37
  • 757

什么是Windows USB设备路径,它是如何格式化的?

什么是Windows USB设备路径,它是如何格式化的?   Windows操作系统依靠唯一的设备路径来唯一标识连接到系统的每个USB设备/接口。设备路径字符串...
  • kingmax54212008
  • kingmax54212008
  • 2017年09月04日 14:35
  • 415

USB设备驱动概述

USB设备驱动·  17.1 USB总线协议·  17.1.1 USB设备简介·  17.1.2 USB连接拓扑结构·  17.1.3 USB通信的流程·  17.1.4 USB四种传输模式·  17...
  • mao0514
  • mao0514
  • 2015年06月10日 18:15
  • 2052

修改硬件设备名称

方法 :通过注册表修改硬件设备名称、 1、WIN+R 输入 regedit打开注册表 2、HKEY_COLAL_MACHINE——》SYSTEM 3、Ctrl+F查找设备实例路径(设备管理器--...
  • gaoszzzz
  • gaoszzzz
  • 2017年12月26日 14:28
  • 18

使用adb查看安装包的apk路径与清除安装包数据与缓存操作实例

adb shell pm path 输出安装包的APK路径 adb shell pm clear 删除与包相关的所有数据:清除数据和缓存...
  • henni_719
  • henni_719
  • 2017年03月15日 14:16
  • 5102

USB驱动程序之USB设备驱动程序1简单编写

1、驱动编写分析 (1)usb总线驱动程序在我们接入USB设备的时候会帮我们构造一个新的usb_device.注册到总线里面来。左边这一块已经帮我们做好了,我们要做的是右边这一块。我们要构造一个us...
  • qingkongyeyue
  • qingkongyeyue
  • 2016年11月28日 22:28
  • 1348

Linux USB 驱动开发(一)—— USB设备基础概念

在终端用户看来,USB设备为主机提供了多种多样的附加功能,如文件传输,声音播放等,但对USB主机来说,它与所有USB设备的接口都是一致的。一个USB设备由3个功能模块组成:USB总线接口、USB逻辑设...
  • zqixiao_09
  • zqixiao_09
  • 2016年03月25日 21:42
  • 7559
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:USB设备驱动程序加载流程
举报原因:
原因补充:

(最多只允许输入30个字)