版块
论坛
喜欢
话题
应用
搜索
登录
注册
xiaorain的个人空间
访问量
0
新鲜事
帖子
资料
http://bbs3.driverdevelop.com/index.php?m=space&uid=54736
在取消主irp的时候如何取消辅助irp?
一个usb的驱动,使用异步通信方式,应用中用readfile()来进行读,但是读取数据的长度是随便指定的。我在驱动的dispathread历程中构造很多个irp(携带urb)发送给usb下层驱动,现在我要在从设备读完所有数据后取消没有结束的irp。是不是可以为irp_mj_rea...
全文
回复
(
3
)
2004-12-01 20:56
来自版块 -
内核编程
◆
◆
表情
告诉我的粉丝
提 交
Shentu
:
只有你自己发出的Irp才可以用IoCancelIrp来取消之,详细说明参考DDK。 在应用里不可能指定固定长度的,因为这个通用驱动要支持那么多的串口软件。
(2004-12-02 23:01)
回复
xiaorain
:
谢谢您的关心:). 显式是指 irp_mj_read这个irp是不是要我在调用了IocancelIrp()后才能进入它的取消历程?还是系统会自动调用呢? 您在应用中指定了要读取得数据的确切长度了吗〉?而不是随便指定一个数值,如1024? 现在就是因为应用中没有指定正确的长...
(2004-12-02 09:32)
回复
Shentu
:
1、有个办法可以解决这种取消问题。把你的要发给下层驱动的irps放进一个队列里,然后在每个irp的完成例程里管理这个队列,在取消IRP_MJ_READ的IRP的时候,把这个队列里的正在等待的IRP给cancel掉,其他的就直接删除就可以了,因为同一时间其实只能有一个IRP在pen...
(2004-12-01 21:50)
回复
xiaorain
加关注
写私信
0
关注
0
粉丝
95
帖子
返回顶部