Windows下的USB驱动程序 简单框架
2022-05-17 20:53:22 7 举报
AI智能生成
Windows下的USB驱动程序 简单框架
作者其他创作
大纲/内容
USB设备热插拔
IRP_MJ_PNP
IRP_MN_START_DEVICE
驱动加载并运行时
USB驱动程序对应操作
获取并存储USB设备描述信息
IRP_MN_STOP_DEVICE
设备关闭前
USB驱动程序对应操作
尽快结束IRP并逐个取消掉
标记设备扩展当前状态为“停止”
IRP_MN_EJECT
设备正常弹出前
USB驱动程序对应操作
强迫结束并取消 所有未完成的读写IRP
标记设备状态为被拔掉
IRP_MN_SURPRISE_REMOVAL
设备非自然弹出
USB设备对应操作
强迫结束并取消 所有未完成的读写IRP
标记设备状态为被拔掉
来自:
即插即用管理器
USB设备读写
80%走Bulk管道
一个读/写 操作
典型示例
驱动程序
设置 IRP_MJ_READ / IRP_MJ_WRITE 派遣函数
应用程序
调用 API 进行 ReadFile / WriteFile
(背景知识)
设备堆栈
USB功能驱动(FDO)
分支主题
USB物理总线驱动(PDO)
分支主题
USB Host 或 USB Hub驱动
各种描述符
端点描述符
描述处理事务(Transaction)的端点
接口描述符
描述设备提供的功能接口
配置描述符
描述设备能实现的配置方式
设备描述符
大致步骤
创建URB
UsbBuildGetDescriptorRequest
关联URB至IRP
IoBuildDeviceIoControlRequest
发送URB至底层驱动程序
IoCallDriver
等待完成IRP
同步
(不做处理)
异步(STATUS_PENDING)
KeWaitForSingleObject
令牌(Token)阶段已包含在内
USB设备初始化
注册标准的WDM回调(Callback)函数
0 条评论
下一页