阅读:3119回复:1
WDF开发USB驱动时,关于读写处理以及和WDM之间的迷惑
最近在做VISTA下USB驱动的开发(刚接触),刚看了几天WDM,发现有WDF这个东西,就转过来看WDF。
现在对USB读写有点不清楚,具体如下,望大大们不要吝啬,知道的留个记号。。。 在WDK包里提供的usbsamp工程里 driect方式 1.首先获得MDL地址,转换虚拟地址,申请一定长度的内存单元并加入MDL MAP里 2.使用WDM的方式的UsbBuildInterruptOrBulkTransferRequest,申请URB。 3.通过PIPE异步方式发送URB。 4.设置完成例程。 5.发送I/O请求 buffer方式 1.获取I/O请求缓冲区地址(buffer) 2.把申请的内存给新的memory对象 3.异步的进行管道读写 4.设置完成例程 5.发送I/O请求 这里迷惑的是 1.driect和buffer方式是I/O方式不同,怎么前者需要去申请URB,后者的URB是框架自己去做的。 2.为什么最后才会发送I/O请求,这个I/O请求怎么理解。不是要做的事情已经发送出去了吗? 3.看的武安河的WDF开发,书上,都有对URB的参数的设置,但是WDK里面的KMDF例程都没有,这个正确的方式应该是什么样的? |
|
沙发#
发布于:2009-05-06 16:12
武安河的WDF开发书,对urb方式是注释掉的,可以不采用这种方式,按WDK的KMDF例程好了
|
|