将Windows驱动程序转换为64位 - 我可以使用32位DLL吗?

时间:2010-04-02 18:14:11

标签: device-driver

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

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

2 个答案:

答案 0 :(得分:5)

在64位系统上:

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

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

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

答案 1 :(得分:0)

DLL也必须是64位。

将尝试查找参考。

Got one

  

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

这就是为什么没有32位驱动程序在64位上工作以及为什么它们总是单独下载

的原因