17.3 USB驱动开发实例
本节具体介绍如何进行USB驱动的开发,本节采用的源码来源自DDK的源程序,其位置在DDK子目录的src\wdm\usb\bulkusb目录下。该示例很全面地支持了即插即用IRP的处理,也很全面地支持了电源管理,同时很好地支持了USB设备的bulk读写。如果从头开发USB驱动,往往很难达到USB驱动的稳定性,所以强烈建议读者在此驱动修改的基础上进行USB驱动开发。
17.3.1 功能驱动与物理总线驱动
DDK已经为USB驱动开发人员提供了功能强大的USB物理总线驱动(PDO),程序员需要做的事情是完成功能驱动(FDO)的开发。驱动开发人员不需要了解USB如何将请求转化成数据包等细节,程序员只需要指定何种管道,发送何种数据即可。
当功能驱动想向某个管道发出读写请求时,首先构造请求发给USB总线驱动。这种请求是标准的USB请求,被称为URB(USB Request Block),即USB请求块。这种URB被发送到USB物理总线驱动以后,被USB总线驱动所解释,进而转化成请求发往USB HOST驱动或者USB HUB驱动,如图17-21所示。
|
| 图17-21 总线驱动与功能驱动的关系 |
| 回书目 上一节 下一节 |