首页 > 程序设计『Programing』 > 键盘过滤驱动勘误《寒江独钓》

键盘过滤驱动勘误《寒江独钓》

Keydata=Irp->AssociatedIrp.SystemBuffer;
numKeys=Irp->IoStatus.Information / Sizeof(KEYBOARD_INPUT_DATA);
for ( i=0;i<numKeys;i++)
{
    DbgPrint(("numKeys : %d ",numKeys));
    DbgPrint(("Scan code : %x ",KeyData->MakeCode));
    DbgPrint(("%s\n",KeyData->Flags? "up":"down"));
    MyPrintKeyStroke((UCHAR)KeyData->MakeCode);
 
    if (KeyData->MakeCode==CAPS_LOCK)
    {
        KeyData->MakeCode=LCONTROL;
    }
}

以上是书上的源代码,整个循环体只遍历了第一个结构体,后面的并没有进行操作,虽然有个循环但是并没有什么实质的作用,正确的遍历代码应该是下面的样子。程序代码所在页面Page-73 :)

Keydata=Irp->AssociatedIrp.SystemBuffer;
numKeys=Irp->IoStatus.Information / Sizeof(KEYBOARD_INPUT_DATA);
for ( i=0;i<numKeys;i++,numKeys++)
{
    DbgPrint(("numKeys : %d ",numKeys));
    DbgPrint(("Scan code : %x ",KeyData->MakeCode));
    DbgPrint(("%s\n",KeyData->Flags? "up":"down"));
    MyPrintKeyStroke((UCHAR)KeyData->MakeCode);
 
    if (KeyData->MakeCode==CAPS_LOCK)
    {
        KeyData->MakeCode=LCONTROL;
    }
}

原创文章,转载请注明: 转载自火星信息安全研究院

本文链接地址: 键盘过滤驱动勘误《寒江独钓》: http://www.h4ck.org.cn/2010/01/drivers/

  1. 还没有评论
评论提交中, 请稍候...

留言

:p 8) :lol: =( :8 ;) :(( :o: :[ :) :D :-| :-[) :bloody: :cool: :choler: :love: :oups: :aie: :beurk:
可以使用的标签: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">
Trackbacks & Pingbacks ( 0 )
  1. 还没有 trackbacks