daor
驱动牛犊
驱动牛犊
  • 注册日期2001-05-16
  • 最后登录2018-04-15
  • 粉丝0
  • 关注0
  • 积分-25分
  • 威望2点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
阅读:2461回复:8

如何解决ioctl处理时间过长的问题?

楼主#
更多 发布于:2002-08-23 10:27
    我在本端pc的驱动中,响应一个ioctl,该ioctl是要读取远端设备的某些数据。而该数据从远端设备传至本机,需要一定的时间,估计会超过系统允许一个dispatch运行的最长时间。那么我该怎么做?
谢谢!

最新喜欢:

kxgchinakxgchi...
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2002-08-23 10:54
把他pending,返回,等数据来再继续处理。
daor
驱动牛犊
驱动牛犊
  • 注册日期2001-05-16
  • 最后登录2018-04-15
  • 粉丝0
  • 关注0
  • 积分-25分
  • 威望2点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-08-23 11:52
    恩。。。又是阿舍兔大侠哈~
    我就是对 STUTUS_PENDING 的理解不透彻。以下是我的想法,
不知道对不对?
      
    ?在dispatch中,
    先使用IoMarkIrpPending标记该IRP为等待,
    设置CancelRoutine,
    创建一系统线程,用来等待数据,
    返回STUTUS_PENDING。
    
    ?在以上创建的系统线程中,等待数据到来,
    清除irp的等待标记,
    设置irp的各个域,
    返回STATUS_SUCCESS。

    不知道我这个做法有什么问题吗?其中,是不是一定要设置
irp的等待标记?
    再次感谢!
 :D
magicx
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2014-08-18
  • 粉丝1
  • 关注0
  • 积分-14分
  • 威望13点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-08-23 12:12
   恩。。。又是阿舍兔大侠哈~
    我就是对 STUTUS_PENDING 的理解不透彻。以下是我的想法,
不知道对不对?
      
    ?在dispatch中,
    先使用IoMarkIrpPending标记该IRP为等待,
    设置CancelRoutine,
    创建一系统线程,用来等待数据,
    返回STUTUS_PENDING。
    
    ?在以上创建的系统线程中,等待数据到来,
    清除irp的等待标记,
    设置irp的各个域,
    返回STATUS_SUCCESS。

    不知道我这个做法有什么问题吗?其中,是不是一定要设置
irp的等待标记?
    再次感谢!
 :D


    ?在以上创建的系统线程中,等待数据到来,

清除:设置CancelRoutine。
      设置irp的各个域,
      IoCompleteRequest(Irp, IO_NO_INCREMENT);
      返回STATUS_SUCCESS。
就可!


 :)
[color=red]大头鬼! :P[/color]
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
地下室#
发布于:2002-08-23 13:31
要设置pending的
daor
驱动牛犊
驱动牛犊
  • 注册日期2001-05-16
  • 最后登录2018-04-15
  • 粉丝0
  • 关注0
  • 积分-25分
  • 威望2点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-08-23 14:16
 
IoCompleteRequest(Irp, IO_NO_INCREMENT);
返回STATUS_SUCCESS。
就可!

谢谢提醒!我是把IoCompleteRequest漏写了。
    
多谢各位出手,我已经清楚了,现在发报酬了哈
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
6楼#
发布于:2002-08-23 14:23
为什么是“又”呢?
daor
驱动牛犊
驱动牛犊
  • 注册日期2001-05-16
  • 最后登录2018-04-15
  • 粉丝0
  • 关注0
  • 积分-25分
  • 威望2点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2002-08-23 14:28
    看你在论坛上很活跃,前几天还回过我的帖子,高手挖!
今天又看到这个id,觉得很熟悉塞!
    我刚入门驱动,还忘多多关照哈
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
8楼#
发布于:2002-08-23 14:51
where where :D
比较会蹭分罢了。 :D :D
游客

返回顶部