能力值:
( LV13,RANK:1050 )
|
-
-
2 楼
good,顶
|
能力值:
( LV3,RANK:20 )
|
-
-
3 楼
|
能力值:
( LV9,RANK:290 )
|
-
-
4 楼
强人,顶起!
|
能力值:
( LV9,RANK:570 )
|
-
-
5 楼
谢谢捧场,我目前正在做一个基于Delphi的驱动开发工具包,我给它起了个名字叫KmdKit4D(Kernel Mode Driver Kit for Delphi),目前已经完成了没有@xx后缀的ntoskrnl.lib、hal.lib、win32k.lib、ntdll.lib导入库的创建以及一些常用C头文件转换成pascal声明的工作,适当的时候我会把它发布在论坛里(Delphi能开发驱动,BCB当然也能做^_^)
|
能力值:
( LV9,RANK:290 )
|
-
-
6 楼
C头文件转换成pascal声明
这个已经有一个工具了,在jvcl的网站有的下载,叫什么headerconv
|
能力值:
( LV9,RANK:570 )
|
-
-
7 楼
谢谢sislcb兄提醒,HeadConv我试过,基本无法转换DDK的头文件,我用的是4.01版的^_^
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
麻烦楼主一下,我现在手头只有DELPHI7
那么想写一个驱动,还需要哪些准备工作呢(是下载还是什么的)
实在是不想用C来写
|
能力值:
( LV9,RANK:570 )
|
-
-
9 楼
正准备写个贴子详细说呢,如果你用D7的话,需要D7的DCC32、system.dcu、sysinit.dcu
m$的link(我用的是8.00.50727.42版)、omf2d,DDK相关的Delphi声明文件以及我生成的那些没有@xx后缀的导入库。需要的话可以留下邮件地址我发给你。
|
能力值:
( LV4,RANK:50 )
|
-
-
10 楼
不知到直接用delphi2007的版本可不可以编辑。
好像总有问题!
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
当然要了,麻烦发到wp231957@163.com谢谢
|
能力值:
( LV9,RANK:570 )
|
-
-
12 楼
我用的就是delphi 2007编辑的,很好用的,不过要把相关的dcu文件拷贝到delphi2007的lib目录下,这样可以CodeInsign^_^
|
能力值:
( LV2,RANK:10 )
|
-
-
13 楼
非常支持啊!
|
能力值:
( LV12,RANK:410 )
|
-
-
14 楼
学习。。。
|
能力值:
( LV3,RANK:20 )
|
-
-
15 楼
楼主写的不错.
前两年我做驱动的时候也尝试过用Delphi做驱动.
实际上我没用到MS的任何连接器和工具.
我是直接建立EXE/DLL工程,RTL的单元也是用的DDDK简化过的剥离Win32API的单元.
直接用DCC32编译成EXE/DLL,扩展名改成.SYS.
然后写了一个工具把修改PE文件中导入表OriginalFirstThunk和PE头的CheckSum.Delphi编译器总是把这些地方填0.而驱动加载的时候恰恰是要校验这些地方的.
|
能力值:
( LV9,RANK:570 )
|
-
-
16 楼
此法的确可行,我也用过,优点是方便,不过缺点也很明显,生成的代码太大,随便一个driver的尺寸都会超过20K,而且没有init节区,不是一个标准的驱动文件,所以我才下决心做了KmdKit4d.
|
能力值:
( LV2,RANK:10 )
|
-
-
17 楼
支持,LZ
能不能给个link的 下载连接?
|
能力值:
( LV9,RANK:570 )
|
-
-
18 楼
|
能力值:
( LV2,RANK:10 )
|
-
-
19 楼
恩,支持....
偶昨天直接从官方下了SDK
里面附带的有link.exe
- -
M 大牛 多写点文章哈~~~~
加油!
|
能力值:
( LV2,RANK:10 )
|
-
-
20 楼
MICKEYLAN 我需要你所说的这些文件,能否发我!
我的邮件 jing5700@sina.com
|
能力值:
( LV9,RANK:570 )
|
-
-
21 楼
|
能力值:
( LV2,RANK:10 )
|
-
-
22 楼
我用的是delphi2007,照教程说的做,为什么总提示
fatal:f1026 file not found: h:\a.dpr
是找不到这个文件,是什么意思,需要工程文件吗
|
能力值:
( LV9,RANK:570 )
|
-
-
23 楼
编译时要在DOS命令行的相应目录下直接执行make,而不是用Delphi的集成开发环境。make前请先检查你电脑的环境变量是否设置好了,至少PATH里应该有make.exe文件所在目录的信息。
|
能力值:
( LV2,RANK:10 )
|
-
-
24 楼
首先十分感谢你的回复,可能我太苯了,没能理解你的意思!
1. 用dcc32 –U ..\include -B -CG -JP -$A-,C-,D-,G-,H-,I-,L-,P-,V-,W+,Y- beeper.pas生成目标文件(此处的..\inc是我保存相关delphi单元文件的目录,你的可能不是这个目录哟)
2. 用omf2d beeper.obj /U_*转换目标文件,使其能被m$ link链接
3. 用link /NOLOGO /ALIGN:32 /BASE:0x10000 /SUBSYSTEM:NATIVE /DRIVER /FORCE:UNRESOLVED /FORCE:MULTIPLE /ENTRY:DriverEntry ..\lib\hal.lib beeper.obj /OUT:beeper.sys生成最终的驱动文件。
这是你讲的三步
第一步,我想问的是 beeper.pas 在哪编辑生成?我理解应该可以在 delphi下吧?或者记事本?这一步应该生成的是obj文件
第二步好理解
第三补应该就是make.exe吧?
不知道理解的是否?
另在用delphi7或delphi2007各需要怎么做,希望能写出详细的每一步骤!再次感谢!
|
能力值:
( LV9,RANK:570 )
|
-
-
25 楼
对于.pas文件只要是个文本编辑器就可以了,不过我也是用delphi2007的编辑器编辑.pas文件的,用着亲切些。至于编译,就必须在命令行下做了。我的做法是先写个makefile,以下是一个makefile的例子:
NAME=beeper
DCC=dcc32
INCLUDE=\mickeylan\KmdKit4D\include
LIB_PATH=\mickeylan\KmdKit4D\lib
DCCFLAGS=-U$(INCLUDE) -B -CG -JP -$A-,C-,D-,G-,H-,I-,L-,P-,V-,W+,Y- -O+
LIBS=ntoskrnl.lib hal.lib win32k.lib ntdll.lib ntutils.lib
LINKFLAGS=/NOLOGO /ALIGN:32 /BASE:0x10000 /SUBSYSTEM:NATIVE /DRIVER /LIBPATH:$(LIB_PATH) /ENTRY:DriverEntry
all : $(NAME).sys
$(NAME).sys : $(NAME).obj
rmcoff $(NAME).obj
link $(LINKFLAGS) $(LIBS) /out:$(NAME).sys $(NAME).obj
$(NAME).obj : $(NAME).pas
$(DCC) $(DCCFLAGS) $(NAME).pas
clean :
del *.obj
del *.dcu
del *.sys
NAME=beeper
DCC=dcc32
INCLUDE=\mickeylan\KmdKit4D\include
LIB_PATH=\mickeylan\KmdKit4D\lib
DCCFLAGS=-U$(INCLUDE) -B -CG -JP -$A-,C-,D-,G-,H-,I-,L-,P-,V-,W+,Y- -O+
LIBS=ntoskrnl.lib hal.lib win32k.lib ntdll.lib ntutils.lib
LINKFLAGS=/NOLOGO /ALIGN:32 /BASE:0x10000 /SUBSYSTEM:NATIVE /DRIVER /LIBPATH:$(LIB_PATH) /ENTRY:DriverEntry
这一段用来定义编译器的别名、include目录和lib目录的宏,用于make时进行宏替换,仔细看一下应该能理解
all : $(NAME).sys
$(NAME).sys : $(NAME).obj
rmcoff $(NAME).obj
link $(LINKFLAGS) $(LIBS) /out:$(NAME).sys $(NAME).obj
$(NAME).obj : $(NAME).pas
$(DCC) $(DCCFLAGS) $(NAME).pas
这一段用来定义编译规则,要生成beeper.sys(这里$(NAME)=beeper,在定义部分定义的)依赖于beeper.obj,首先用rmcoff对beeper.obj进行格式转换等工作,然后调用link链接生成beeper.sys。而beeper.obj则依赖于beeper.pas,用DCC编译beeper.pas生成beeper.obj
clean :
del *.obj
del *.dcu
del *.sys
这部分是用于清理的代码。
在命令行下执行make all就会编译生成驱动文件,执行make clean则会进行清工作。要注意的就是系统环境变量的path部分必须有包含make.exe这个文件的路径信息。如果你用D7的话,唯一要做的就是用D7的system.dcu和sysutils.dcu替换我提供的这两个文件。如果有问题可以到MSN上和我交流。我一天基本都在的^_^
|
|
|