描述:
各位高手:
在设计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;
}
/////////////////////////////////////////////////////////////////////////////////
解决方案1:
建议你参考CTRL2CAP在READ 完成例程里过滤......
解决方案2:顶...关注中!
解决方案3:帮顶!关注中
解决方案4: 顶一下