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

  • 相关文章推荐

    设备树(Device Tree)(完整设备路径名(Full Device Pathnames))

    设备树(Device Tree)(完整设备路径名(Full Device Pathnames)) OpenBoot deals directly with the hard...

    教程番外1——设备实例与设备类

    1 简述在教程1中,我们在INF文件中添加了一个自己的设备类,并为其分配了一个GUID,还定义了注册表项,先回顾一下INF文件中的相关部分:; 版本域 [Version] ... Class=HUST...

    根据VID PID获取USB设备路径

    #include #include #pragma comment(lib, "setupapi.lib") BOOL EnumUSBDevice(WORD uVID, WORD u...

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

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

    USB设备驱动

    USB设备

    怎样写linux下的USB设备驱动程序

    怎样写linux下的USB设备驱动程序 引言 随着人们生活水平的提高,我们用到的USB设备也越来越多,但是Linux在硬件配置上仍然没有做到完全即插即用,对于Linux怎样配置和使用他...

    怎样写linux下的USB设备驱动程序

    怎样写linux下的USB设备驱动程序 引言 随着人们生活水平的提高,我们用到的USB设备也越来越多,但是Linux在硬件配置上仍然没有做到完全即插即用,对于Linux怎样配置和使用他们,也越...

    windows CE下的USB设备驱动程序分析 .

    随着USB设备的不断增加,我们这些开发人员也就多了对USB设备进行驱动程序开发的工作。但是对于很多初学者来说,存在以下三个困难:      一是对WinCE的驱动程序结构了解得太少,没办法得心应手的...
    内容举报
    返回顶部
    收藏助手
    不良信息举报
    您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
    举报原因:
    原因补充:

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