我的Windows驅動程序有一個.sys文件和一個.dll(我猜是驅動程序的編程接口?)。無論如何,我需要編譯驅動程序在Windows 7 64位上運行。我已經下載了DDK並且能夠編譯所有內容,但是我的應用程序仍然無法使用新的驅動程序。將Windows驅動程序轉換爲64位 - 我可以使用32位DLL嗎?
如果應用程序是32位應用程序,驅動程序DLL是否需要編譯爲32位DLL,而.sys文件是64位文件?或者SYS和DLL文件都需要64位?
我的Windows驅動程序有一個.sys文件和一個.dll(我猜是驅動程序的編程接口?)。無論如何,我需要編譯驅動程序在Windows 7 64位上運行。我已經下載了DDK並且能夠編譯所有內容,但是我的應用程序仍然無法使用新的驅動程序。將Windows驅動程序轉換爲64位 - 我可以使用32位DLL嗎?
如果應用程序是32位應用程序,驅動程序DLL是否需要編譯爲32位DLL,而.sys文件是64位文件?或者SYS和DLL文件都需要64位?
在64位系統:
如果一個DLL被設計爲與設備驅動程序進行通信,則應仔細編寫以使用與驅動程序相同的數據類型定義。如果驅動程序和DLL都避免使用用於相互通信的結構中的32位和64位(例如size_t
)定義不同的數據類型,則最好。
但是,這是的而不是意味着該DLL應構建爲64位DLL(即使用x86-64指令集)。它應該使用連接到它的應用程序將使用的任何指令集。
+1。優秀的答案! – 2012-09-20 13:35:27
驅動程序不調用DLL(內核驅動程序不使用DLL!)。該DLL用於用戶模式與驅動程序進行交互。因此,如果使用DLL的應用程序是32位,則應該是32位,如果應用程序是64位,則應該是64位。上面的答案是不正確的/ – Ilya 2011-12-07 16:02:17
發表你自己的正確答案然後... – gbn 2011-12-07 16:04:57