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

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

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

最新喜欢:

kxgchinakxgchi...
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
daor
驱动牛犊
驱动牛犊
  • 注册日期2001-05-16
  • 最后登录2018-04-15
  • 粉丝0
  • 关注0
  • 积分-25分
  • 威望2点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-08-23 14:16
 
IoCompleteRequest(Irp, IO_NO_INCREMENT);
返回STATUS_SUCCESS。
就可!

谢谢提醒!我是把IoCompleteRequest漏写了。
    
多谢各位出手,我已经清楚了,现在发报酬了哈
daor
驱动牛犊
驱动牛犊
  • 注册日期2001-05-16
  • 最后登录2018-04-15
  • 粉丝0
  • 关注0
  • 积分-25分
  • 威望2点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-08-23 14:28
    看你在论坛上很活跃,前几天还回过我的帖子,高手挖!
今天又看到这个id,觉得很熟悉塞!
    我刚入门驱动,还忘多多关照哈
游客

返回顶部