无心化语
禁止发言
禁止发言
  • 注册日期2001-03-23
  • 最后登录2018-06-01
  • 粉丝0
  • 关注0
  • 积分-103分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
  • 社区居民
阅读:3270回复:12

将拦截到的IRP直接完成

楼主#
更多 发布于:2001-09-04 20:54
用户被禁言,该主题自动屏蔽!

最新喜欢:

jinghuirenjinghu...
无心化语
禁止发言
禁止发言
  • 注册日期2001-03-23
  • 最后登录2018-06-01
  • 粉丝0
  • 关注0
  • 积分-103分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2001-09-06 21:43
用户被禁言,该主题自动屏蔽!
sttypxx
驱动牛犊
驱动牛犊
  • 注册日期2001-05-17
  • 最后登录2011-04-06
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2001-09-06 16:55
你说的真是奇怪,仔细检查一下吧。
我的驱动程序也是hidusb的LowerFilter,也需要在有的时候直接完成hidusb的请求,我用上述方法一切正常呀。
由于我的驱动要在98/2000下同时运行,故没有用remove_lock,
我要提醒你的是:
HidUsb同时维持两个读请求,这两个读请求的IRP生成后一直使用不改变。
你可以实验:
建立一个什么也不做的lowerFilter,监视hidusb发来的IRP。
starmoon
驱动小牛
驱动小牛
  • 注册日期2001-04-28
  • 最后登录
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2001-09-06 14:37
complete 的一个重要事件就是调 complete 列程。

应该是 hidusb.sys 里设置的这个列程。 并不要你的程序里设置
无心化语
禁止发言
禁止发言
  • 注册日期2001-03-23
  • 最后登录2018-06-01
  • 粉丝0
  • 关注0
  • 积分-103分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
  • 社区居民
地下室#
发布于:2001-09-06 13:21
用户被禁言,该主题自动屏蔽!
starmoon
驱动小牛
驱动小牛
  • 注册日期2001-04-28
  • 最后登录
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2001-09-06 12:09
查看一下你的 removelock 是不是有问题?

因为我也用了类拟的方法了, 直接完成的。 不下传了。

但我不是用的读数据IRP, 我用的写数据的, 数据处理完就complete 了.
无心化语
禁止发言
禁止发言
  • 注册日期2001-03-23
  • 最后登录2018-06-01
  • 粉丝0
  • 关注0
  • 积分-103分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
  • 社区居民
6楼#
发布于:2001-09-06 10:19
用户被禁言,该主题自动屏蔽!
sttypxx
驱动牛犊
驱动牛犊
  • 注册日期2001-05-17
  • 最后登录2011-04-06
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2001-09-06 10:08
我没有监视过,不知是否是你说的那样。
我看了看WDM.H中关于IRP结构的定义,采用
Irp->IoStatus.Information表示传送的字节数不会错。因为没有其他比较合适的地方了。
我想问的是,你监视的是一般的驱动程序还是使用URB的USB驱动程序。也许这个USB驱动程序自己认为该域不重要,而只设定了
TransferBufferLength表示这次传送的字节数。
无心化语
禁止发言
禁止发言
  • 注册日期2001-03-23
  • 最后登录2018-06-01
  • 粉丝0
  • 关注0
  • 积分-103分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
  • 社区居民
8楼#
发布于:2001-09-06 09:32
用户被禁言,该主题自动屏蔽!
sttypxx
驱动牛犊
驱动牛犊
  • 注册日期2001-05-17
  • 最后登录2011-04-06
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2001-09-06 09:09
我也这样这样做过,但与你有些不同。
我设定TransferBufferLength为我传送的字节数。
设定UrbHeader.Status = USBD_STATUS_SUCCESS。(应该是这儿)
Irp->IoStatus.Status = STATUS_SUCCESS;
Irp->IoStatus.Information = 传送的字节数;
IoCompleteRequest(Irp,IO_MOUSE_INCREMENT);考虑到对HID设备的
优先级提升。
return STATUS_SUCCESS;

无心化语
禁止发言
禁止发言
  • 注册日期2001-03-23
  • 最后登录2018-06-01
  • 粉丝0
  • 关注0
  • 积分-103分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
  • 社区居民
10楼#
发布于:2001-09-06 08:23
用户被禁言,该主题自动屏蔽!
无心化语
禁止发言
禁止发言
  • 注册日期2001-03-23
  • 最后登录2018-06-01
  • 粉丝0
  • 关注0
  • 积分-103分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
  • 社区居民
11楼#
发布于:2001-09-06 08:12
用户被禁言,该主题自动屏蔽!
starmoon
驱动小牛
驱动小牛
  • 注册日期2001-04-28
  • 最后登录
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2001-09-06 01:31
你是在什么位置填URB的?

有没检查 BufferLength?
游客

返回顶部