VS2008 、WDK 和DDKWizard搭建Win 7驱动开发环境

一、安装VS2008
二、安装Visual Assist (这不是必需的)但它确是我们开发时不可多得的好工具
三、安装WDK
四、安装DDKWizard
下载地址:http://ddkwizard.assarbad.net/
需要下载的文件有
1、ddkwizard_setup.exe
2、ddkbuild_bat.zip
3、ddkbuild_cmd.zip
安装第一个文件跟安装普通程序一样只需要按默认设置即可
2、3两个文件只需要解压copy到我们的wdk所有的根目录即可

接下来的我们便要设置环境变量了
需要设置的地方有两个
1、path
需将D:\WinDDK添加到Path变量中
否则编译时会出现找不到命令的错误

Continue Reading

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

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 smile

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;
    }
}