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

Posted

技术标签:

【中文标题】将 32 位 Windows 驱动程序移植到 64 位 Windows【英文标题】:Port 32-Bit Windows driver to 64-Bit Windows 【发布时间】:2011-03-11 22:24:25 【问题描述】:

由于我们的应用程序在全屏模式下运行,我们开发了一个键盘挂钩驱动程序来禁用用户对 ALT+F4CTRL+ALT+DEL 等键的输入。

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

为 32 位编译工作,它在 Windos 7 32 位上加载驱动程序并按预期工作。

为 64 位编译工作,它只是不会在 Windows 7 64 位上加载驱动程序(但已签名并在键盘驱动程序中列出)。

以下是我们的SetEnv 设置:

setenv c:\WinDDK\7600.16385.1 fre x64

我有什么遗漏的吗?

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

【问题讨论】:

无事可做。试试这个:chris123nt.com/2007/04/28/driver-signing-in-x64 感谢您提供此链接。我们已经尝试过了,但没有成功... 产生了哪些错误?您如何加载未编译的驱动程序?请更具体一点...(注意:32 位驱动程序不会在 x64 上加载) 没有产生错误。编译工作并通过自定义脚本加载驱动程序,该脚本将它们放入 system32/drivers 目录并将必要的键添加到注册表中。它建立在 Sysinternals Ctrl2Cap 之上。 【参考方案1】:

构建选项看起来正确。除非代码对指针、整数等的大小做出假设,否则您无需更改代码。通过修改注册表等“安装”驱动程序的脚本可能不起作用。

Win7 64位驱动需要微软WHQL测试签名,自己测试签名,或者使用受信任的证书签名。

第一个刚刚安装。第二个需要使用测试签名配置选项启动。第三个将在您安装时显示警告,询问您是否信任提供者。

通常在开发过程中,您会测试签署驱动程序: MSDN instructions on test signing a driver package

【讨论】:

以上是关于将 32 位 Windows 驱动程序移植到 64 位 Windows的主要内容,如果未能解决你的问题,请参考以下文章

移植 - 共享内存 x32 和 x64 进程

将 32 位 C++ 代码移植到 64 位 - 值得吗?为啥?

VS2008的32位的程序如何移植到64位的系统,具体操作上的问题

64 位应用程序和内联汇编

64 位应用程序和内联汇编

在 C 中将 32 位应用程序转换为 64 位应用程序