在挂靠设备的时候,挂在了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 。
------解决思路----------------------
你的驱动是怎么安装的?