24小时热门版块排行榜    

查看: 1042  |  回复: 0

zyj8119

木虫 (著名写手)

[交流] 【转帖】Delphi驱动开发研究(工具更新至0.03版)

Delphi能不能开发Windows的驱动程序(这里的驱动程序当然不是指VxD了^_^)一直是广大Delphi fans关注的问题。由于Delphi编译器无法生成Native格式的PE文件,因此是无法使用Delphi直接生成驱动程序的(个人见解,欢迎斧正),必须配合ms link才能生成最终的驱动程序。本人经过总结网上一些前辈高人的方法并结合自己的研究成果,摸索出了一种较为方便的使用Delphi开发驱动程序的方法,不敢独亨,希望能同论坛里的高手们一起打造出一个实用的驱动开发工具。^_^

2010.03.04 -- KmdKit4D更新到0.20版:
本次更新是KmdKit4D自发布以来最重大的一次,KmdKit4D升级到0.2版,rmcoff同步升级到2.4.1.239。KmdKit4D会更加灵活方便和易于使用。主要更新的内容如下:
1.rmcoff增加新的选项/cfg,此选项允许你通过定义配置文件为KmdKit4D增加类似VC #pragma alloc_text编译指令的功能,你可以把不同的代码放入不同的section,目前支持Page和Init两个选项,具体用法如下:
(1)编辑一个文本文件,如果你要将DriverEntry函数放入Init Section中,就输入:Init=DriverEntry,如果有多个函数,函数名用“,”号分隔,就像这样:Init=Func1,Func2,......。
(2)运行rmcoff时加上/cfg:[配置文件名参数],如:rmcoff test.obj /cfg:test.cfg。
(3)要放入Init和Page Section的函数必须在Delphi单元文件的interface部分进行声明。
2.经rmcoff转换后的目标文件的符号名按微软的符号名格式命名,这样做的好处就是KmdKit4D可以直接链接微软的静态库和用VC和MASM生成的obj文件并调用其提供的函数,同样,用VC或者MASM生成的obj文件也可以调用经KmdKit4D转换后的目标文件里的函数。这样你不但可以用Delphi给KmdKit4D编写函数库,也可以用VC和MASM为KmdKit4D编写函数库。需要注意的就是函数库里的函数必须是stdcall或者C调用约定的。
3.修改了经rmcoff转换后的obj文件格式,使其支持ms link的smart link功能,只有用到的代码和数据才会被链接进最终的驱动文件中,这样KmdKit4D生成的驱动文件将会更加小巧。
4.由于符号命名格式发生变化,定义DriverEntry函数时不再需要前面的下划线,这点一定要注意。
5.由于符号命名格式发生变化,在Delphi中对导入库的声明也要做相应的调整,比如你要导入ntoskrnl.exe文件导出的RtlInitUnicodeString函数,0.2前的版本是这样声明的:
procedure RtlInitUnicodeString; external NtKernel name '_RtlInitUnicodeString';
从0.2版开始要改成:
procedure RtlInitUnicodeString; external NtKernel name '_RtlInitUnicodeString@8';
这个是stdcall的,对fastcall的则要改成下面的形式:
function krnlIofCallDriver; external NtKernel name '@IofCallDriver@8';


Delphi驱动开发专题主要包括以下几方面的内容:
一、实现原理----用Delphi开发驱动程序需要解决的主要技术问题
http://bbs.pediy.com/showthread.php?t=57762
二、工具及环境搭建----KmdKit4D的组成及环境搭建方法
http://bbs.pediy.com/showthread.php?t=58070
三、一个用Delphi开发的简单但功能完备的驱动程序示例
http://bbs.pediy.com/showthread.php?t=58301
四、内存管理之系统内存堆
http://bbs.pediy.com/showthread.php?t=58608
五、内存管理之后备列表
http://bbs.pediy.com/showthread.php?t=59265
六、内核模式与用户模式通讯之共享Section
http://bbs.pediy.com/showthread.php?t=66291
七、内核模式与用户模式通讯之共享内存
http://bbs.pediy.com/showthread.php?t=66661
八、注册表
http://bbs.pediy.com/showthread.php?t=71350
九、目录与文件
http://bbs.pediy.com/showthread.php?t=102690
十、同步----计时器和线程
http://bbs.pediy.com/showthread.php?t=102892
十一、同步----互斥
http://bbs.pediy.com/showthread.php?t=105373
十二、Shared Event
http://bbs.pediy.com/showthread.php?p=761262
十三、IRP的生命循环
十四、过滤驱动


PS:开发工具发布及更新贴 http://www.kmdkit4d.net/dispbbs.do?boardId=8&ID=17&star=1
回复此楼
好好学习,天天向上。
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 zyj8119 的主题更新
普通表情 龙 兔 虎 猫 高级回复 (可上传附件)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[职场人生] 40+中年人失业后,还能找到好工作吗? +9 xqy2009 2026-10-13 11/550 2026-10-15 16:37 by beefly
[有机交流] 用NBS溴化时溶剂除了CCl4外还有什么 +3 18834002860 2026-10-12 6/300 2026-10-15 14:30 by 长沙摩尔信息科�
[基金申请] 申请科研项目纯靠实力能成功吗? 200+7 David1982 2026-10-13 11/550 2026-10-15 10:30 by zyqchem
[硕博家园] 极限拉扯,如何抉择 +11 Isak0320 2026-10-12 15/750 2026-10-14 21:55 by 猫鱼不是鱼
[有机交流] OpenAI又攻克数学难题了,离AI做有机合成还有多远? +8 wangyl_123 2026-10-10 13/650 2026-10-14 15:12 by zuesli
[公派出国] 售一区SCI文章T0P,我:8O.551.O54,科目全,可十急 +5 qR2AdCWTVtkw 2026-10-09 9/450 2026-10-11 22:34 by XQNyDCa1Tk5n
[找工作] 售SCI一区T0P文章,我:8.O55.1.O.54,科目全,可十急 +5 qR2AdCWTVtkw 2026-10-09 8/400 2026-10-11 22:26 by XQNyDCa1Tk5n
[公派出国] 售SCI一区文章,我:8O5.5.1.O5.4,科目全,可伽急 +5 qR2AdCWTVtkw 2026-10-09 10/500 2026-10-11 22:26 by XQNyDCa1Tk5n
[考博] 售SCI一区T0P文章,我:8.O55.1.O.54,科目全,可十急 +5 qR2AdCWTVtkw 2026-10-09 9/450 2026-10-11 22:15 by XQNyDCa1Tk5n
[考博] 售SCI一区文章,我:8.O.55.1.O.54,科目齐全,可伽急 +3 qR2AdCWTVtkw 2026-10-09 7/350 2026-10-11 22:11 by XQNyDCa1Tk5n
[教师之家] 售SCI文章,我:8O5.5.1.O.54,科目齐全,可+急 (EPI+-1)(金币-50) +5 qR2AdCWTVtkw 2026-10-09 10/500 2026-10-11 22:06 by XQNyDCa1Tk5n
[教师之家] 售SCI文章,我:8O.5.5.1O.54,科目全,可十急 (EPI+-1)(金币-50) +4 qR2AdCWTVtkw 2026-10-09 7/350 2026-10-11 14:05 by VOMexwnDzOFZ
[考研] 售SCI文章,我:8O.5.5.1O.54,科目全,可十急 +5 qR2AdCWTVtkw 2026-10-09 8/400 2026-10-11 13:51 by VOMexwnDzOFZ
[硕博家园] 售SCI-T0P文章,我:8O.5.5.1.O.54,科目齐全,可+急 +5 qR2AdCWTVtkw 2026-10-09 8/400 2026-10-11 13:45 by VOMexwnDzOFZ
[找工作] 售SCI一区T0P文章,我:8O.55.1.O.5.4,科目齐全,可+急 +3 qR2AdCWTVtkw 2026-10-09 7/350 2026-10-11 10:54 by VOMexwnDzOFZ
[找工作] 售SCI一区T0P文章,我:8O.55.1.O.5.4,科目齐全,可+急 +4 qR2AdCWTVtkw 2026-10-09 7/350 2026-10-11 10:34 by VOMexwnDzOFZ
[考博] 招收博士生一名 +3 mandolin 2026-10-10 3/150 2026-10-11 10:21 by 不是山谷!
[公派出国] 售SCI一区T0P文章,我:8O.55.1.O.54,科目全,可伽急 +4 qR2AdCWTVtkw 2026-10-09 4/200 2026-10-11 03:14 by M0zrYVSAnxpE
[有机交流] 各位大佬,路线设计求助 +6 zapen 2026-10-08 8/400 2026-10-10 15:59 by zapen
[有机交流] 我应该选哪条合成路线让实验成功率高一些? +5 jing816y 2026-10-08 9/450 2026-10-10 09:05 by zapen
信息提示
请填处理意见