Windows下的USB驱动程序 简单框架

Add by mighten | Aug 07, 2017 07:47  1992 |  532
Windows下的USB驱动程序 简单框架
Download

Map Outline

Windows下的USB驱动程序 简单框架
1 (背景知识)
1.1 设备堆栈
1.1.1 USB功能驱动(FDO)
1.1.2
1.1.3 USB物理总线驱动(PDO)
1.1.4
1.1.5 USB Host 或 USB Hub驱动
1.2 各种描述符
1.2.1 端点描述符
1.2.2 接口描述符
1.2.3 配置描述符
1.2.4 设备描述符
2 大致步骤
2.1 创建URB
2.1.1 UsbBuildGetDescriptorRequest
2.2 关联URB至IRP
2.2.1 IoBuildDeviceIoControlRequest
2.3 发送URB至底层驱动程序
2.3.1 IoCallDriver
2.4 等待完成IRP
2.4.1 同步
2.4.1.1 (不做处理)
2.4.2 异步(STATUS_PENDING)
2.4.2.1 KeWaitForSingleObject
3 USB设备初始化
3.1 注册标准的WDM回调(Callback)函数
4 USB设备热插拔
4.1 IRP_MJ_PNP
4.1.1 IRP_MN_START_DEVICE
4.1.1.1 驱动加载并运行时
4.1.1.2 USB驱动程序对应操作
4.1.1.2.1 获取并存储USB设备描述信息
4.1.2 IRP_MN_STOP_DEVICE
4.1.2.1 设备关闭前
4.1.2.2 USB驱动程序对应操作
4.1.2.2.1 尽快结束IRP并逐个取消掉
4.1.2.2.2 标记设备扩展当前状态为“停止”
4.1.3 IRP_MN_EJECT
4.1.3.1 设备正常弹出前
4.1.3.2 USB驱动程序对应操作
4.1.3.2.1 强迫结束并取消 所有未完成的读写IRP
4.1.3.2.2 标记设备状态为被拔掉
4.1.4 IRP_MN_SURPRISE_REMOVAL
4.1.4.1 设备非自然弹出
4.1.4.2 USB设备对应操作
4.1.4.2.1 强迫结束并取消 所有未完成的读写IRP
4.1.4.2.2 标记设备状态为被拔掉
5 USB设备读写
5.1 80%走Bulk管道
5.2 一个读/写 操作 典型示例
5.2.1 驱动程序
5.2.1.1 设置 IRP_MJ_READ / IRP_MJ_WRITE 派遣函数
5.2.2 应用程序
5.2.2.1 调用 API 进行 ReadFile / WriteFile

More Maps From User

No more maps.