USB驱动编程培训upload.ppt

  1. 1、本文档共41页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
USB驱动编程培训upload

电源状态分以下六个状态: * * 系统电源状态 含义 SO(Working) CPU全功率运行 S1(Sleeping1) CPU停止,RAM被刷新 S2(Sleeping2) CPU不通电,RAM被刷新 S3(Sleeping3) CPU不通电,RAM处于低速刷新模式,电源功率输出降低 S4(Hibemate) 系统停止,RAM被保存到磁盘 S5(Shutdown) 系统停止并关闭,需要完全引导以恢复操作 设备电源状态: 操作系统不直接处理设备的电源状态,而是有驱动程序专门处理。设备至少要支持D0与D3。 * * 设备电源状态 含义 D0 设备全功率运行 D1 设备运行于低功耗模式,设备环境可能被保留 D2 设备运行低功率模式,设环境可能无效 D3 设备没有电,环境丢失 关于USB电源管理策略 USB电源管理策略: USB处理电源管理的基本IRP规则 USB驱动应该响应的电源管理器发出IRP * * 用户模式的USB数据读写与应用程序 用户模式与驱动包IRP对应关系 IRP_MJ_CREATE, IRP_MJ_READ, IRP_MJ_WRITE 用户模式应用程序打开设备 用户模式应用程序读取USB设备 * * USB设备数据读写 用户模式下API与驱动程序的IPR对应关系: * * 用户API函数 IRP 说明 CreateFile IRP_MJ_CREATE 打开设备 ReadFile IRP_MJ_READ 从设备获取数据 WriteFile IRP_MJ_WRITE 向设备发送数据 CloseFile IRP_MJ_CLOSE 关闭设备 DevicControl IRP_MJ_DEVICE_CONTROL 控制操作 开打设备 首先已知设备GUID通过调用SetupDiGetClassDev获得设备的信息集; 在设备信息集里调用SetupDiEnumDeviceInterface识别接口信息; 在接口信息中调用SetupDiGetDeviceInterfaceDetail获得设备路径名; 通过设备路径CreateFile打开设备,此时内核对应发出IRP_MJ_CREATE,操作系统自动访问对应驱动 * * 上层应用程序读写数据 读写数据通过驱动对象的IRP_MJ_READ与IRP_MJ_WRITE功能例程: 使用用户模式的readfile与writefile API调用驱动内核对象; 建立内存映像; 通过内存对齐复制实现数据交互; 还是通过IRP包来获取数据 * * 总结 简要审阅所演示的内容 确定应用培训的方法 请求有关培训单元的反馈 * * 更多信息 列出其他培训单元 列出书籍、文章、电子来源 列出咨询服务、其他来源 * * USB处理电源管理的基本IRP规则 其最基本规则要遵循以下几点: 同步操作必须严格,PDO只能仅且有一个IRP_MN_QUERY_POWER或者IRP_MN_SET_POWER 电源IRP必须一次性处理,不能产生等待事件或者是锁对象的系统例程; 也是需要分层处理,并且只能用特殊对象API接受电源管理器的IRP IRP_MN_QUERY_POWER允许失败,但是IRP_MN_SET_POWER不能失败。 如果是跟电源相关的IRP,不能像普通IRP一样处理,特别在传输上。 * * USB驱动应该响应的电源管理器发出IRP 在USB驱动中也是通过处理IRP来实现电源管理: 处理电源查询IRP:IRP_MN_QUERY_POWER查询是设备电源,还是系统电源,通过调用内核函数HandleSystemQueryPower来查询系统电源, HandleDeviceQueryPower 查询设备电源状态; 处理电源状态设置IRP:IRP_MN_SET_POWER;设置要分系统电源和设备电源,通过内核函数HandleSystemSetPower设置系统电源的状态,通过内核函数HandleDeviceSetPower设置设备电源的状态。 处理等待/唤醒IRP:IRP_MN_WAIT_WAKE查理等待/唤醒设备,这里将内核函数WaitWakeCompletionRoution作为回调例程后,将IRP往下层驱动传。 * * * * * 简介 USB编码以及总线数据结构 USB数据流模型 USB的PNP管理 USB的电源管理 USB数据包与应用程序 * * USB编码以及总线数据结构 USB编码 USB总线数据结构 包 传输事务 帧结构 * * USB编码 USB接口针脚结构: 同步时钟+数据: 采用了NRZI(Non Return to Zero Invert)反向非归零编码; 既能保证数据传送的完整,也不需要独立的时钟信号 * * 包(Package) 包

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档