2

我的 Windows 驱动程序有一个 .sys 文件和一个 .dll (我猜这是驱动程序的编程接口?)。无论如何,我需要编译驱动程序以在 Windows 7 64 位上运行。我已经下载了DDK并且能够编译所有内容,但我的应用程序仍然无法与新驱动程序一起使用。

如果应用程序是 32 位应用程序,驱动 DLL 是否需要编译为 32 位 DLL,.sys 文件需要编译为 64 位文件?还是 SYS 和 DLL 文件都需要是 64 位的?

4

2 回答 2

6

在 64 位系统上:

  • 驱动程序应始终为 64 位
  • 应用程序可以是 32 位或 64 位
  • 应用程序使用的 DLL(即应用程序链接的 DLL)对于 32 位应用程序应该是 32 位的,对于 64 位应用程序应该是 64 位的

如果 DLL 设计为与设备驱动程序通信,则应仔细编写它以使用与驱动程序相同的数据类型定义。最好是驱动程序和 DLL 都避免size_t在用于相互通信的结构中使用为 32 位和 64 位(例如)定义不同的数据类型。

但是,这并不意味着DLL 应该构建为 64 位 DLL(即使用 x86-64 指令集)。它应该使用链接到它的应用程序将使用的任何指令集。

于 2011-12-07T16:35:22.167 回答
0

DLL 也必须是 64 位的。

将尝试找到参考。

拿到一个

由于 64 位程序无法调用 32 位动态链接库 (DLL)

这就是为什么没有 32 位驱动程序适用于 64 位以及为什么它们总是单独下载的原因

于 2010-04-02T18:23:41.597 回答