dogLee
驱动牛犊
驱动牛犊
  • 注册日期2001-11-19
  • 最后登录2002-06-12
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1917回复:4

41分求助USB中断传输,急急急!!

楼主#
更多 发布于:2002-05-23 12:07
我需要查询USB的interrupt endpoint一次/ms,

如果设置一个线程去不断轮询,能否达到?我试了一下好像不行,

我想使用walter oney的例子:在device_extension里预先分配一个urb,一个irp,然后每次使用这个发送到下层总线驱动程序,但是不释放内存,设置一个CompleteRoutine,在这个CompleteRoutine里继续发送这个urb,可以实现持续的查询。

但是在我这里,当我做好中断查询urb,初始化好irp后,发送到下层总线驱动程序,下层驱动程序返回status_pending,然后等待一个消息,就一直等待在那里,(在这里请问是不是当设备端没有数据向中断端点写时,我去读这个中断端点,irp就不返回数据??)这样下层驱动程序就不去主动执行IoCompleteRequest,(是不是由于这个原因而不去执行我的CompleteRoutine??)这样我的程序就没办法进行下去,

我在我的驱动程序中设置了一个定时器,倘若1ms后还没有消息返回就自己返回,但这个时候该如何处理irp,使得我可以进行下一次查询??因为IrpStackLocation的数量是有限的?我执行几次之后就出现IO_STACK_LOCATION溢出的问题,我该怎样对其进行初始化?或者我如何对刚才的Irp进行处理,使得它可以去调用我的完成程序?

老板催的急,请大侠帮忙,解决这个问题,或者提供一个USB中断传输的例子,万分感谢!!!,必然加分,绝不食言。。。

最新喜欢:

abei11abei11
bunnyh
驱动牛犊
驱动牛犊
  • 注册日期2002-04-25
  • 最后登录2005-09-03
  • 粉丝1
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-05-23 16:12
读中断端点,irp不返回数据.这说明USB设备没有数据就绪(一直返回NAK)而HOST CONTROLLER 在断地重发IN TOKEN 试图读取数据.这很正常!

如果想中止读操作, CANCEL 发出的IRP就行了.
 :D
tigerzd
驱动老牛
驱动老牛
  • 注册日期2001-08-25
  • 最后登录2004-12-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-05-24 08:31
对中断传输,要解决两个问题:
1、中断间隔。
2、中断数据。
驱动程序应该在指定的中断间隔定时发送读数据的请求,而设备端要求定时作出响应。因此必须了解设备如何产生数据。关于驱动程序中断传输的处理,你可以参考Chris Cant的《Windows WDM设备驱动程序开发指南》中的USBKBD例子,其中有USB键盘的中断传输的处理方法。
犯强汉者,虽远必诛! [img]http://www.driverdevelop.com/forum/upload/tigerzd/2002-12-13_sf10.JPG[/img]
dogLee
驱动牛犊
驱动牛犊
  • 注册日期2001-11-19
  • 最后登录2002-06-12
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-05-24 09:00
谢谢各位,我的设备是蓝牙设备,不是自己做的设备,在蓝牙规范中要求的是每隔1ms对设备端进行一次读中断端口,我去试一下cancelIrp能否在1ms内完成操作。
dogLee
驱动牛犊
驱动牛犊
  • 注册日期2001-11-19
  • 最后登录2002-06-12
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-05-24 13:04
在walter oney的书里提到,当startIo程序开始处理Irp时,这个时候在进行IoCancelIrp则不起作用,那么当我的Urb发送到下层驱动程序后,设备端并没有数据传送到中断端点,我一直等待在这里,那么
我在这个时候去执行IoCancelIrp是否会起作用 :P
游客

返回顶部