2010-04-02 116 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

相關問題