USB功能驱动(FDO)
USB物理总线驱动(PDO)
USB Host 或 USB Hub驱动
PDO完成了大部分工作,
封装了USB协议细节
并为FDO提供了标准的接口
描述处理事务(Transaction)的端点
描述设备提供的功能接口
描述设备能实现的配置方式
设备描述符
自下而上
(除端点描述符
可以为0个之外)
每一下一层
都拥有 上一层
一个至多个
UsbBuildGetDescriptorRequest
IoBuildDeviceIoControlRequest
IoCallDriver
(不做处理)
KeWaitForSingleObject
令牌(Token)阶段已包含在内
注册标准的WDM回调(Callback)函数
驱动加载并运行时
获取并存储USB设备描述信息
设备关闭前
尽快结束IRP并逐个取消掉
标记设备扩展当前状态为“停止”
设备正常弹出前
强迫结束并取消 所有未完成的读写IRP
标记设备状态为被拔掉
设备非自然弹出
强迫结束并取消 所有未完成的读写IRP
标记设备状态为被拔掉
来自:
即插即用管理器
80%走Bulk管道
设置 IRP_MJ_READ / IRP_MJ_WRITE 派遣函数
调用 API 进行 ReadFile / WriteFile