[英]Can I write Windows drivers with Delphi 2010?
我一直聽說Delphi可以做任何C ++可以做的事情......除了編寫Windows驅動程序。 這是正確的,如果是這樣,那為什么呢?
我最近在線閱讀了一篇博客文章,可能表明使用Delphi編寫驅動程序的可能解決方案 ,但它已經3年了,我不知道這些信息有多准確。
因此,使用最新版本的Delphi(2010),編寫Windows驅動程序在技術上是否可行?
在技術上可能用Delphi編寫一些驅動程序,但就一般答案而言,我會說: 你不能輕易地用Delphi編寫驅動程序 。
首先,用戶模式驅動程序(UMDF)驅動程序和內核模式(KMDF)驅動程序之間存在差異。 使用Delphi可以實現UMDF驅動程序。 但是,KMDF司機並不容易實現,因為
1)Delphi的鏈接器不能生成它們
2)Delphi的目標文件格式與Microsoft鏈接器默認使用的COFF格式不同。
3)Delphi的RTL假設它處於用戶模式並且可能做某些不應該在kernel-land中做的事情(我認為例如處理異常的方式;也有不同的內存管理),所以你有要非常小心哪些RTL功能可以安全使用。 系統和SysInit單元也存在困難(請參閱Ritsaert Hornstra的評論到另一個答案)。
我不是說這些不是無法克服的問題(參見你鏈接的帖子)如果你真的很專注,但它不會直截了當。
其次,KMDF驅動程序(我不知道UMDF,實際上 - 任何人都可以發表評論嗎?)因為Win64必須使用64位代碼。 從目前開始,沒有64位Delphi編譯器,編寫它們是一個明確的禁忌。
您可以使用任何語言編寫Windows驅動程序,這些語言編譯為PE格式的DLL,沒有外部依賴關系(除了批准在內核中加載的那些),可以使用STDCALL鏈接調用函數,並使用STDCALL鏈接導出函數。
沒有未經批准的外部依賴性將是我想到的困難部分。 :)
我同意以前的答案。 我實際上是在一個特殊情況下完成的:打印顯示器。 這是一個在用戶模式下運行的驅動程序的特例,我可以在Delphi中編寫一個。 在那里使用Delphi肯定有一些好處。
但是尚未提及的最后一個陷阱(我認為)是你需要從DDK頭文件中翻譯數以萬億的復雜結構和宏。 特別是翻譯一些復雜的宏可能非常棘手。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.