2010-04-02 87 views
1

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

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

回答

0

该DLL也必须是64位。

将尝试找到参考。

Got one

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

这就是为什么没有32位驱动程序适用于64位和为什么他们总是单独的下载

+1

驱动程序不调用DLL(内核驱动程序不使用DLL!)。该DLL用于用户模式与驱动程序进行交互。因此,如果使用DLL的应用程序是32位,则应该是32位,如果应用程序是64位,则应该是64位。上面的答案是不正确的/ – Ilya 2011-12-07 16:02:17

+0

发表你自己的正确答案然后... – gbn 2011-12-07 16:04:57

5

在64位系统:

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

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

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

+0

+1。优秀的答案! – 2012-09-20 13:35:27

相关问题