enjoylife
驱动牛犊
驱动牛犊
  • 注册日期2003-08-22
  • 最后登录2003-08-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1287回复:3

!求教关于USB读返回的问题!(花光为止急急急)

楼主#
更多 发布于:2003-08-22 16:19
各位大虾,请帮忙看一问题如何解决!

我的USB驱动的对应于IRP_MJ_READ的USB的读程序是这样写的:

UsbBuildInterruptOrBulkTransferRequest(。。。);
。。
KeInitializeEvent( &event, NotificationEvent, FALSE);
IoSetCompletionRoutine(。。。);
ntStatus = IoCallDriver( deviceExtension->TopOfStackDeviceObject, Irp);
if( ntStatus==STATUS_PENDING)
{
  KeWaitForSingleObject( &event, Executive, KernelMode, FALSE, NULL);
  ntStatus = Irp->IoStatus.Status;
}

这样我的程序在进行读操作时就只有等待结束后才会返回,但如果我
想让ReadFile函数立即返回,怎么办,对于cancel掉这个Pending 的IRP没有成功过。

谢谢,请多多指教。不胜感激。


 

[编辑 -  8/23/03 by  enjoylife] :P :P :P :P

[编辑 -  8/23/03 by  enjoylife]

[编辑 -  8/23/03 by  enjoylife]

[编辑 -  8/23/03 by  enjoylife]
enjoylife
驱动牛犊
驱动牛犊
  • 注册日期2003-08-22
  • 最后登录2003-08-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-08-25 09:50
能不能在同步传输的情况下实现呢。
比如,我计算超时,然后取消IRP。
但具体怎样操作还没有成功。
请指点。
jinghuiren
驱动巨牛
驱动巨牛
  • 注册日期2002-06-01
  • 最后登录2008-10-27
  • 粉丝0
  • 关注0
  • 积分291分
  • 威望460点
  • 贡献值0点
  • 好评度428点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-08-23 20:27
想让它立即返回就用异步irp吧
具体里成参考ddk里的bulkusb例子里面的bulkusb_read()和bulkusb_write()函数。
enjoylife
驱动牛犊
驱动牛犊
  • 注册日期2003-08-22
  • 最后登录2003-08-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-08-23 16:04
没有人回复?
游客

返回顶部