usb加载详细过程.docVIP

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
usb加载详细过程

【转】?usb加载详细过程(zz) 2010-06-20 21:00 转载自?分享 最终编辑?pulerain 当你的u盘插入以后.? usbhub能检测到有某个设备连接进来(usb某根数据线的电平超过最小输入电压2.5us).通知windows有一新设备连接进来了.? 然后pnp manager发送一系列的pnp irp到这个新设备? 比如query caps,query id.query resource,query resource req等等.? 和我们讨论有关的就是query id了.? pnp manager首先query的是device id.目的是用来定位所谓的device key? 他位于current control set\\enum下面.? usbhub为其返回的id格式如下? USB\\VID_xxxxPID_xxxx 当然了,这两个数来自于device descriptor? pnp manager接着query instance id.根据需要生成一个instance id string并附加到device id后面形成如下的string.也就是所谓的某个device的instance path? USB\\VID_xxxxPID_xxxx\\xxxx? 然后用他作为sub key的名字去打开? LOCAL_MACHINE\\system\\CurrentControlSet\\Enum\\下的某个key? 比如我的u盘的instance path是? USB\\Vid_0c45Pid_1060\\51489a8501? 对应的device key就是? LOCAL_MACHINE\\System\\CurrentControlSet\\Enum\\USB\\Vid_0c45Pid_1060\\51489a8501? 如果这个key已经存在.pnp manager则认为是一个以前就安装好驱动程序的设备.如果这个key不存在,pnp manager则认为是一个新设备,出现发现新硬件的提示.通知user mode要为这个设备选择一个驱动.? 先看key存在的情况.? pnp manager会query他的resource和resource requirement.并且查询适当的arbiter和translator交给他们作仲裁.并分配适当的资源.资源分配完成了以后.pnp manager开始start这个新的设备.? 首先是为其加载function device和filter device.? function driver 是由device key下面service字段指出来的? windows读取他.用他作为subkey的name去? current control set\\Services下面打开这个key? 按照需要加载其driver的sys文件,创建driver object? 而对于filter则有好些种? 一类是专属于这个device的,另外一类是属于则device所在的class的? 专属device的lower跟upper filters就在device key下面? 而class的filter则是在class key的下面? 在device key下面有一个classguid的value,pnp manager读取他? 作为subkey? 到? current control set\\control\\class下面去打开key? 然后读取lower 跟upper filters..? 当然这些filters本身的driver也会被加载进来? 然后把他们的driver objects放到一个数组里面,先后顺序是? LowerDeviceFilters? LowerClassFilters? DeviceService? UpperDeviceFilters? UpperClassFilters? 从上到下逐一调用其AddDevice函数? 这样就算初步搭建完了这个新设备的device stack? 接下来就会有其他的pnp irp发送.? 比如filter resource requirement,query caps,start device等等? 然后pnp manager为这个新搭建的device stack发送query bus relations 的irp,如果这个新的设备是个bus driver的话,他也会按照通知windows有新的设备连接在其上面.windows再重复以上的步骤.? 回过来.如果instance key不存在.windows则为其创建这个instance key并通知user mode,user mode的pnp man

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档