我的 Windows 驱动程序有一个 .sys 文件和一个 .dll (我猜这是驱动程序的编程接口?)。无论如何,我需要编译驱动程序以在 Windows 7 64 位上运行。我已经下载了DDK并且能够编译所有内容,但我的应用程序仍然无法与新驱动程序一起使用。
如果应用程序是 32 位应用程序,驱动 DLL 是否需要编译为 32 位 DLL,.sys 文件需要编译为 64 位文件?还是 SYS 和 DLL 文件都需要是 64 位的?
我的 Windows 驱动程序有一个 .sys 文件和一个 .dll (我猜这是驱动程序的编程接口?)。无论如何,我需要编译驱动程序以在 Windows 7 64 位上运行。我已经下载了DDK并且能够编译所有内容,但我的应用程序仍然无法与新驱动程序一起使用。
如果应用程序是 32 位应用程序,驱动 DLL 是否需要编译为 32 位 DLL,.sys 文件需要编译为 64 位文件?还是 SYS 和 DLL 文件都需要是 64 位的?
在 64 位系统上:
如果 DLL 设计为与设备驱动程序通信,则应仔细编写它以使用与驱动程序相同的数据类型定义。最好是驱动程序和 DLL 都避免size_t
在用于相互通信的结构中使用为 32 位和 64 位(例如)定义不同的数据类型。
但是,这并不意味着DLL 应该构建为 64 位 DLL(即使用 x86-64 指令集)。它应该使用链接到它的应用程序将使用的任何指令集。
DLL 也必须是 64 位的。
将尝试找到参考。
由于 64 位程序无法调用 32 位动态链接库 (DLL)
这就是为什么没有 32 位驱动程序适用于 64 位以及为什么它们总是单独下载的原因