Ice@P
驱动牛犊
驱动牛犊
  • 注册日期2002-12-09
  • 最后登录2003-10-18
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1365回复:5

一个比较复杂的应用程序和驱动程序通讯的问题!

楼主#
更多 发布于:2002-12-09 21:34
一个比较复杂的应用程序和驱动程序通讯的问题!

需要完成的工作大致如下:

1。驱动程序发送数据给应用程序(比如:一个字符串),等待应用程序的命令
2。应用程序接收到这个字符串,进行处理,然后返回一个命令!
3。驱动程序接收到应用程序的命令,完成1步没有完成的操坐!

偶的想法:
  
1。先在应用程序里面 createvent, 将event的句柄用deviceiocontrol传给驱动程序,再waitforsingleobject等待驱动的返回。

2。驱动获得数据,然後就需要将数据交给应用程序!就kesetevent() 唤醒应用程序的event.

3。应用程序从waitforsingleobject中唤醒,用deviceiocontrol向驱动要数据,然后对数据进行处理,再用deviceiocontrol对驱动下命令!

4。驱动接收到命令,进行2步剩下的工作!

问题:
     这个驱动是对irp的数据进行操作,2步kesetevent后,irp没有完成,而3步两个deviceiocontrol又使得驱动处理新的irp,那么老的irp

放在哪里?到第4步的时候怎么把老的irp取出来?


还有就是这个方法可不可行?有没有其他的方法?
本人乃菜鸟一只,问题弱弱请不要取笑。。。。。。。。
last:thanks



 :P :P :P

最新喜欢:

aollyiaaollyi...
认认真真过一生
Ice@P
驱动牛犊
驱动牛犊
  • 注册日期2002-12-09
  • 最后登录2003-10-18
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-12-11 09:32
霍霍,第二步的数据是怎么得到的
中断? :D


不是中断,是截取到的irp里面的
认认真真过一生
zydcat
驱动老牛
驱动老牛
  • 注册日期2001-12-06
  • 最后登录2006-04-12
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-12-10 21:23
霍霍,第二步的数据是怎么得到的
中断? :D
[color=red]肥虫虫[/color] [img]http://www.driverdevelop.com/forum/upload/bradley/2002-11-15_ig01.gif[/img]
Ice@P
驱动牛犊
驱动牛犊
  • 注册日期2002-12-09
  • 最后登录2003-10-18
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-12-10 10:01
个人觉得问题没有这么简单,主要是偶不知道,如何将一个irp存起来,去处理另外的irp,完成了另外irp后再取出老的irp,继续进行处理!

认认真真过一生
lrx666
驱动太牛
驱动太牛
  • 注册日期2001-08-17
  • 最后登录2010-10-25
  • 粉丝0
  • 关注0
  • 积分14分
  • 威望47点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-12-10 08:19
去专题文章李去看,这个问题介绍的很清楚了,无非是共享内存,event,deviceio等
xjcxc
驱动牛犊
驱动牛犊
  • 注册日期2002-03-27
  • 最后登录2006-08-28
  • 粉丝0
  • 关注0
  • 积分30分
  • 威望3点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-12-09 23:31
需要完成的工作大致如下:

1。驱动程序发送数据给应用程序(比如:一个字符串),等待应用程序的命令
2。应用程序接收到这个字符串,进行处理,然后返回一个命令!
3。驱动程序接收到应用程序的命令,完成1步没有完成的操坐!

偶的想法:

1。先在应用程序里面 createvent, 将event的句柄用deviceiocontrol传给驱动程序,再waitforsingleobject等待驱动的返回。

2。驱动获得数据,然後就需要将数据交给应用程序!就kesetevent() 唤醒应用程序的event.

3。应用程序从waitforsingleobject中唤醒,用deviceiocontrol向驱动要数据,然后对数据进行处理,再用deviceiocontrol对驱动下命令!

4。驱动接收到命令,进行2步剩下的工作!

问题:
这个驱动是对irp的数据进行操作,2步kesetevent后,irp没有完成,而3步两个deviceiocontrol又使得驱动处理新的irp,那么老的irp

放在哪里?到第4步的时候怎么把老的irp取出来?


还有就是这个方法可不可行?有没有其他的方法?
本人乃菜鸟一只,问题弱弱请不要取笑。。。。。。。。

----------------------------------------------------------------------------------------------------------------------
需要完成的工作是否为:
1。(驱动程序发送数据给应用程序(比如:一个字符串)),应用程序等待驱动程的(命令)消息
2。应用程序接收到这个消息
              应用程序读字符串,进行处理,然后返回一个命令!
3。驱动程序接收到应用程序的命令,完成(1步)没有完成的操坐!

游客

返回顶部