簡體   English   中英

我可以用Delphi 2010編寫Windows驅動程序嗎?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM