Ctrl2Cap v2.0
作者:Mark Russinovich
发布日期:2006 年 11 月 1 日
下载 Ctrl2Cap (48 KB)
Ctrl2cap 是一个内核模式设备驱动程序,用于筛选系统的键盘类驱动程序,以便将 caps-lock 字符转换为 control 字符。 像我这样从 UNIX 迁移到 NT 的人习惯于将 control 键置于标准电脑键盘上 caps-lock 键的位置,因此这样的实用工具对于我们的编辑工作至关重要。
从解压缩 Ctrl2cap 文件的目录中运行命令“Ctrl2cap/Install”以安装 Ctrl2cap。 若要卸载,请键入“ctrl2cap /uninstall”。
在 NT 4 上,Ctrlcap 实际上相当简单。 它只是将自身附加到键盘类驱动程序,以便捕获键盘读取请求。 对于每个请求,它都会发布一个 I/O 完成回调,此时它会查看返回的扫描代码。 如果它恰好是 caps-lock,则 ctrl2cap 将其更改为left-control。
在 Win2K 上,Ctrl2cap 是一个 WDM 筛选器驱动程序,它在键盘类设备之上的键盘类设备堆栈中分层。 这与 Win2K DDK 的 kbfiltr 示例形成对比,后者将自己分层在 i8042 端口设备和键盘类设备之间。 出于以下几个原因,我选择在键盘类设备上分层:
- 这意味着 Ctrl2cap IRP_MJ_READ 拦截和操作代码在 NT 4 和 Win2K 版本之间共享。
- 我不需要提供 INF 文件,也不需要让用户通过设备管理器来安装 Ctrl2cap - 我只需修改相应的注册表值(键盘类设备的 HKLM\System\CurrentControlSet\Control\Class UpperFilters 值)。
我的方法的缺点是(这是一个优点还是缺点,取决于你的观点):
- 由于我没有通过设备管理器使用 INF 文件进行安装,因此不会警告用户 Ctrl2cap 驱动程序文件未由 Microsoft 进行数字签名。
在这种情况下,我觉得优点大于缺点。 但是,在为 Ctrl2cap 上的 Win2K 键盘筛选器建模之前,我强烈建议你学习 Win2K DDK 中的 kbfiltr 示例。 Kbfiltr 在键输入序列中的拦截点使 kbfiltr 可以轻松地将击键注入输入流。
有关编写筛选器驱动程序(将自己附加到其他驱动程序以便查看其输入和/或输出的驱动程序)的详细信息,请查看以下来源:
- Windows NT 和 Windows 2000 DDK 示例 \src\storage\filter\diskperf
- Windows 2000 DDK 示例 \src\input\kbfiltr
- “检查 Windows NT 文件系统”,作者:Mark Russinovich,Dr. Dobb's Journal,1997 年 2 月
- 随附的文件系统筛选器驱动程序 Filemon
下载 Ctrl2Cap (48 KB)
运行平台:
- 客户端:Windows Vista 及更高版本。
- 服务器:Windows Server 2008 及更高版本。