将32位Windows驱动程序移植到64位Windows

8

因为我们的应用程序运行在全屏模式下,我们开发了一个键盘钩子驱动程序来禁用用户输入像 ALT+F4, CTRL+ALT+DEL 等按键。

这个驱动程序是使用 Windows Driver Kit 中的 C 语言开发的。

32 位编译可以,并且在 Windows 7 32 位上加载该驱动程序并如预期地工作。

64 位编译可以,但是它在 Windows 7 64 位上不会加载驱动程序(但已被签名并列在键盘驱动程序列表中)。

以下是我们的 SetEnv 设置:

setenv c:\WinDDK\7600.16385.1 fre x64

我有什么遗漏的吗?

我需要对代码进行特定的更改才能使其在64位上运行吗?


1
没有线索。尝试这个:http://www.chris123nt.com/2007/04/28/driver-signing-in-x64/ - Hans Passant
谢谢您提供这个链接。我们已经尝试过了,但没有成功... - Faizan S.
生成了哪些错误?如何加载一个没有编译的驱动程序?请具体说明一下...(注意:32位驱动程序无法在x64上加载) - Christopher
没有产生任何错误。编译工作正常,并且驱动程序通过自定义脚本加载到system32/drivers目录中,并添加必要的键到注册表中。它是基于Sysinternals Ctrl2Cap构建的。 - Faizan S.
1个回答

3
构建选项看起来正确。除非代码假设指针、整数等的大小,否则您不需要更改代码。通过篡改注册表等方式“安装”驱动程序的脚本可能无法正常工作。
Win7 64位中的驱动程序需要通过Microsoft进行WHQL测试签名、由您自己测试签名或使用可信证书进行签名。
第一个选项只需安装即可。第二个选项需要使用测试签名配置选项启动。第三个选项将在安装时显示警告,询问您是否信任提供商。
通常在开发过程中,您会对驱动程序进行测试签名: MSDN上有关测试签名驱动程序包的说明

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接