导图社区 Windows下的USB驱动程序 简单框架
Windows下的USB驱动程序 简单框架,Windows系统下的USB驱动程序是指用来连接USB设备与电脑的驱动软件。
教育学的历史与未来,总结了元研究与元理论、 21世界教育学发展趋势、基本问题等。
教育学,狭义:学校教育,教育者根据社会发展的要求,在特定的教育场所,有目的、有计划、有组织地对受教育者的身心施加影响,以使他们的身心朝社会期望的方向发展的过程。
《攻心说服力》读书笔记,《攻心说服力》是一部关于如何通过心理学技巧来影响他人并实现有效沟通的书籍。
社区模板帮助中心,点此进入>>
互联网9大思维
组织架构-单商户商城webAPP 思维导图。
域控上线
python思维导图
css
CSS
计算机操作系统思维导图
计算机组成原理
IMX6UL(A7)
考试学情分析系统
Windows下的USB驱动程序简单框架
(背景知识)
设备堆栈
USB功能驱动(FDO)
USB物理总线驱动(PDO)
USB Host 或 USB Hub驱动
PDO完成了大部分工作,封装了USB协议细节并为FDO提供了标准的接口
各种描述符
端点描述符
描述处理事务(Transaction)的端点
接口描述符
描述设备提供的功能接口
配置描述符
描述设备能实现的配置方式
设备描述符
自下而上(除端点描述符 可以为0个之外)每一下一层 都拥有 上一层 一个至多个
大致步骤
令牌(Token)阶段已包含在内
创建URB
UsbBuildGetDescriptorRequest
关联URB至IRP
IoBuildDeviceIoControlRequest
发送URB至底层驱动程序
IoCallDriver
等待完成IRP
同步
(不做处理)
异步(STATUS_PENDING)
KeWaitForSingleObject
USB设备初始化
注册标准的WDM回调(Callback)函数
USB设备热插拔
IRP_MJ_PNP
来自:即插即用管理器
IRP_MN_START_DEVICE
驱动加载并运行时
USB驱动程序对应操作
a. 获取并存储USB设备描述信息
IRP_MN_STOP_DEVICE
设备关闭前
a. 尽快结束IRP并逐个取消掉
b. 标记设备扩展当前状态为“停止”
IRP_MN_EJECT
设备正常弹出前
a. 强迫结束并取消 所有未完成的读写IRP
b. 标记设备状态为被拔掉
IRP_MN_SURPRISE_REMOVAL
设备非自然弹出
USB设备对应操作
USB设备读写
80%走Bulk管道
一个读/写 操作典型示例
驱动程序
设置 IRP_MJ_READ / IRP_MJ_WRITE 派遣函数
应用程序
调用 API 进行 ReadFile / WriteFile