键盘过滤驱动勘误《寒江独钓》
驱动 过滤 键盘 勘误
2023-06-13 09:15:18 时间
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;
}
}
相关文章
- 64位内开发第二十二讲,分层过滤驱动编程详解
- mysql数据库创建表_eclipse怎么导入jdbc驱动
- ECCV 2022 | 摆脱部件标签依赖,上科大&ZMO.AI提出分部件3D人体重建与驱动新方法UNIF
- 一款多功能能打动您的电源驱动方案
- Linux下载安装扫描仪驱动程序指南(linux扫描仪驱动)
- 安装安装Linux 3G模块,构建无线网络(linux3g模块驱动)
- MySQL最新驱动包:提升数据库性能(mysql最新驱动包)
- 探索Linux驱动开发的新天地(linux驱动开发论坛)
- SQL Server驱动蒋文沛取得惊人成功(sqlserver蒋文沛)
- Redis实现高效运行的逻辑驱动(redis运行逻辑)