繁体   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