当前位置: 代码迷 >> 驱动开发 >> 键盘过滤驱动有关问题
  详细解决方案

键盘过滤驱动有关问题

热度:403   发布时间:2016-04-28 10:00:02.0
键盘过滤驱动问题
在挂靠设备的时候,挂在了KeyBoardClass0上。

Lowerkb = IoAttachDeviceToDeviceStack(FilterKb,TargetKb);


安装完成后,能正常工作,完成正常过滤,一切正常。
但是重启电脑后,所有的按键都失效了,好像没有键盘一样。
用WinDbg调试的时候,能正常接收到 IRP_MJ_CREATE 消息。IRP处理方式为:跳过本层驱动。

IoSkipCurrentIrpStackLocation(pIrp);
return IoCallDriver(Lowerkb,pIrp);

但是之后就收不到任何消息了,包括 IRP_MJ_READ,按下键盘也收不到。
之后我怀疑是 IRP_MJ_CREATE 不被底层成功处理。所以我又添加了一个后处理操作来获得处理后的结果。

IoSetCompletionRoutine(...,CreateComplete,.....);

后处理操作发现 pIrp->IoStatus.Status 为STATUS_SUCCESS,的确是成功了。

为什么会这样子??
本来一切正常,但是重启后就不行了。能收得到 IRP_MJ_CREATE 消息,却收不到 IRP_MJ_READ 。
------解决思路----------------------
你的驱动是怎么安装的?
  相关解决方案