| 查看: 948 | 回复: 0 | |||
[交流]
【转帖】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 |
» 猜你喜欢
青椒八年已不青,大家都被折磨成啥样了?
已经有8人回复
免疫学博士有名额,速联系
已经有4人回复
交叉科学部支持青年基金,对三无青椒是个机会吗?
已经有5人回复
国家基金申请书模板内插入图片不可调整大小?
已经有6人回复
招博士
已经有6人回复
限项规定
已经有8人回复
国家级人才课题组招收2026年入学博士
已经有5人回复
Fe3O4@SiO2合成
已经有6人回复
青年基金C终止
已经有4人回复
26申博求博导推荐-遥感图像处理方向
已经有4人回复














回复此楼