PS/2键盘上层过滤驱动设计

mosan 2004-12-22 12:56:19
各位高手:
在设计PS/2键盘上层过滤驱动时,我碰到了一点麻烦:
我打算在过滤驱动中过滤掉特定的键,在win2000 DDK目录..\NTDDK\src\input\kbfiltr中有例程,我将自己的代码加到kbfiltr.c的KbFilter_ServiceCallback函数中,但是我没有过滤掉任何键.
急切的盼望各位的帮忙!!!
下面是我加的代码:
////////////////////////////////////////////////////////////////////////////////
//我自己写的函数
//待过滤的键的扫描码 "a"(MakeCode=0x1C; BreakCode=0xF0,0x1c;)
int Filter(PKEYBOARD_INPUT_DATA InputDataStart,
PKEYBOARD_INPUT_DATA InputDataEnd)
{
//标志位,用来标志是否找到了扫描码
int CodeSign[3];
//遍历InputDataBuffer的指针
PKEYBOARD_INPUT_DATA i=0x0;
int j=0;
//最终的找到了扫描码的标志
int FilterProcess=0;
int InputDataSize=sizeof(KEYBOARD_INPUT_DATA);
//初始化标志位
for(j=0;j<=2;j++)
CodeSign[j]=0;
//遍历InputDataBuffer
for(i=InputDataStart;i<=InputDataEnd;i+=InputDataSize)
{
if (!((i->MakeCode==0x1C) && (i->Flags==KEY_MAKE)))
continue;
else
CodeSign[0]=1;
if (!((i->MakeCode==0xF0) && (i->Flags==KEY_BREAK)))
continue;
else
CodeSign[1]=1;
if (!((i->MakeCode==0x1C) && (i->Flags==KEY_BREAK)))
continue;
else
{
CodeSign[2]=1;
break;
}
}
//设置标志位
for(j=0;j<=2;j++)
FilterProcess&=CodeSign[j];
//过滤之
if (FilterProcess)
{
RtlZeroMemory(i-2*InputDataSize,3);
return 0;
}
return 1;
}
/////////////////////////////////////////////////////////////////////////////////
...全文
140 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
wowocock 2005-01-11
  • 打赏
  • 举报
回复
建议你参考CTRL2CAP在READ 完成例程里过滤......
maplewasp 2005-01-10
  • 打赏
  • 举报
回复
顶...关注中!
googlex 2005-01-10
  • 打赏
  • 举报
回复
帮顶!关注中
mosan 2005-01-04
  • 打赏
  • 举报
回复
kao
怎么没有人应啊?!
Tomato77 2005-01-04
  • 打赏
  • 举报
回复
顶一下
mosan 2004-12-26
  • 打赏
  • 举报
回复
各位:快快帮忙啊!

21,600

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧