24小时热门版块排行榜    

查看: 958  |  回复: 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 的主题更新
普通表情 高级回复 (可上传附件)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 调剂 +8 调剂的考研学生 2026-03-09 8/400 2026-03-15 22:14 by Winj1e
[考研] 化学工程321分求调剂 +5 大米饭! 2026-03-15 5/250 2026-03-15 18:49 by a不易
[考研] 0703化学调剂,求各位老师收留 +7 秋有木北 2026-03-14 7/350 2026-03-15 17:30 by 小物理化学
[考研] 309求调剂 +4 花与叶@ 2026-03-10 4/200 2026-03-14 21:26 by a不易
[考研] 304求调剂 +5 小熊joy 2026-03-14 5/250 2026-03-14 21:07 by peike
[考研] 化学工程321分求调剂(南京工业,浙江工业) +3 大米饭! 2026-03-09 4/200 2026-03-14 02:34 by JourneyLucky
[考研] 一志愿北京化工大学材料与化工296分求调剂 +16 稻妻小编 2026-03-09 18/900 2026-03-14 02:00 by JourneyLucky
[考研] 333求调剂 +3 球球古力 2026-03-09 3/150 2026-03-14 01:57 by JourneyLucky
[考研] 321求调剂 +3 CUcat 2026-03-10 3/150 2026-03-14 00:25 by JourneyLucky
[考研] 26考研调剂 +3 ying123. 2026-03-10 3/150 2026-03-14 00:18 by JourneyLucky
[考研] 341求调剂 +3 番茄头--- 2026-03-10 3/150 2026-03-13 23:07 by JourneyLucky
[考研] 304求调剂 +6 Mochaaaa 2026-03-12 7/350 2026-03-13 22:18 by 星空星月
[考研] 281求调剂 +9 Koxui 2026-03-12 11/550 2026-03-13 20:50 by Koxui
[考研] 301求调剂 +6 Liyouyumairs 2026-03-11 6/300 2026-03-13 20:11 by JourneyLucky
[考研] 302求调剂 +6 负心者当诛 2026-03-11 6/300 2026-03-13 16:11 by JourneyLucky
[考研] 08食品或轻工求调剂,本科发表3篇sci一区top论文,一志愿南师大食品科学与工程 +3 我是一个兵, 2026-03-10 3/150 2026-03-13 10:21 by Yuyi.
[考研] 341求调剂 +4 捣蛋猪猪 2026-03-11 4/200 2026-03-12 14:47 by ruiyingmiao
[考研] 290求调剂 +3 柯淮然 2026-03-10 8/400 2026-03-11 13:48 by 柯淮然
[考研] 298求调剂 +3 Vv呀! 2026-03-10 3/150 2026-03-10 22:40 by 剑诗杜康
[考研] 337求调剂 +3 睡醒,。 2026-03-09 3/150 2026-03-09 10:02 by 求调剂zz
信息提示
请填处理意见