w_anthony
驱动牛犊
驱动牛犊
  • 注册日期2006-05-18
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分12分
  • 威望91点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1036回复:0

初学驱动,请教一个关于完成例程的问题

楼主#
更多 发布于:2009-03-21 15:18
我遇到一个问题,是关于键盘过滤驱动的,它支持卸载。它会自己创建一个设备,Attach到键盘驱动上,在IRP_MJ_READ里面对Irp设置完成例程,以得到按键信息。
但是这里有一个问题,这个驱动加载的时候,已经有一个Irp处于等待中了,由于这个Irp未设置完成例程,也就是说刚刚加载的第一次按键信息无法得到。
我试着给被Attach的设备的CurrentIrp直接设置完成例程,也就是直接对Irp栈成员变量赋值的方法,结果在按键后,完成例程确实被调用了,也得到了按键信息,但是之后的任何按键都没有用了!?
调试输出发现,原先会被调用IRP_MJ_READ回调,也没有被调用到,就好像是读取下一个键值的Irp根本没有生成似的。再次运行驱动,发现那个被Attach的设备的CurrentIrp已经是NULL了,那么就是说确实没有Irp在等待我们按键了?因为没有了下一个Irp,所以自然没人去读去键值,按键就没有用了?
初学驱动,不知道我理解的有没有问题,以及有没有方法解决呢?
游客

返回顶部