阅读:2148回复:4
如何修改Windriver Kernel Plugin的例子中的kptest.mak文件才能生成kptest.sys文件?
DRV_NAME = kptest
BASEDIR=D:\\NTDDK !ifdef WIN95 BINDIR = WIN95 DRV_NM = $(DRV_NAME).vxd CVXDFLAGS = -Zdp -Gs -c -DIS_32 -Zl -DDEBLEVEL=1 -DDEBUG -DWIN95 -D__KERNEL__ AFLAGS = -coff -DBLD_COFF -DIS_32 -W2 -Zd -c -Cx -DMASM6 -DDEBLEVEL=1 -DDEBUG INCDIRS = !else !ifndef BASEDIR !ERROR set BASEDIR enviroment variable to the of NTDDK path. For example: SET BASEDIR=C:\\NTDDK !endif BINDIR = WINNT DRV_NM = $(DRV_NAME).sys CVXDFLAGS = -nologo -DWINVER=0x030A -D_X86_=1 -Di386=1 -DWINNT -D__KERNEL__ -DSTD_CALL -DCONDITION_HANDLING=1 -DWIN32_LEAN_AND_MEAN=1 -DNT_UP=1 -DNT_INST=0 -DWIN32=100 -D_NT1X_=100 -DNT_UP=1 -Dtry=__try -Dleave=__leave -Dexcept=__except -Dfinally=__finally -D_CRTAPI1=__cdecl -D_CRTAPI2=__cdecl -Ditoa=_itoa -Dstrcmpi=_strcmpi -Dstricmp=_stricmp -Dwcsicmp=_wcsicmp -Dwcsnicmp=_wcsnicmp -DDBG=0 -DDEVL=1 -DFPO=1 -D_IDWBUILD /c /Zel /Zp8 /Gy /W3 /Gz /G4 /Oxs /Gf /Oy INCDIRS = -I. -I$(BASEDIR)\\inc -I$(BASEDIR)\\inc\\ddk -I$(BASEDIR)\\inc\\crt !endif LIBDIR = c:\\Windriver\\kerplug\\lib OBJECTS= $(BINDIR)\\kptest.obj all: direxist $(BINDIR)\\$(DRV_NM) direxist: if not exist $(BINDIR)\\nul md $(BINDIR) $(BINDIR)\\kptest.obj: kptest.c cl $(CVXDFLAGS) $(INCDIRS) -Fo$@ %s !ifndef WIN95 $(BINDIR)\\kptest.res: kptest.rc rc -l 409 -r -fo $@ -D_X86_=1 -Di386=1 -DSTD_CALL -DCONDITION_HANDLING=1 -DWIN32_LEAN_AND_MEAN=1 -DNT_UP=1 -DNT_INST=0 -DWIN32=100 -D_NT1X_=100 -DNT_UP=1 -Dtry=__try -Dleave=__leave -Dexcept=__except -Dfinally=__finally -D_CRTAPI1=__cdecl -D_CRTAPI2=__cdecl -Ditoa=_itoa -Dstrcmpi=_strcmpi -Dstricmp=_stricmp -Dwcsicmp=_wcsicmp -Dwcsnicmp=_wcsnicmp -DDBG=0 -DDEVL=1 -DFPO=1 -D_IDWBUILD $(INCDIRS) %s !endif !ifdef WIN95 $(BINDIR)\\$(DRV_NM): $(OBJECTS) kptest.def echo >NUL @<<$(DRV_NAME).crf -MACHINE:i386 -DEBUG:NONE -PDB:NONE -DEF:kptest.def -OUT:$@ -MAP:$(BINDIR)\\$(DRV_NAME).map -VXD $(OBJECTS) $(LIBDIR)\\kp_95w.obj $(LIBDIR)\\kp_95.lib -IGNORE:4039 -IGNORE:4078 << link @$(DRV_NAME).crf cd $(BINDIR) mapsym $(DRV_NAME) cd .. !else $(BINDIR)\\$(DRV_NM): $(OBJECTS) $(BINDIR)\\kptest.res echo >NUL @<<$(DRV_NAME).crf -MERGE:_PAGE=PAGE -MERGE:_TEXT=.text -SECTION:INIT,d -OPT:REF -RELEASE -INCREMENTAL:NO -FULLBUILD -FORCE:MULTIPLE -IGNORE:4001 -IGNORE:4037 -IGNORE:4039 -IGNORE:4065 -IGNORE:4070 -IGNORE:4078 -IGNORE:4087 -IGNORE:4089 -PDB:NONE -debug:notmapped,FULL -debugtype:coff -version:3.51 -osversion:3.51 -MERGE:.rdata=.text -align:0x20 -subsystem:native,3.51 -machine:i386 -base:0x10000 -entry:DriverEntry@8 -driver $(LIBDIR)\\kp_nt.lib $(BASEDIR)\\libfre\\i386\\ntoskrnl.lib $(BINDIR)\\kptest.res $(BINDIR)\\kptest.obj -out:$@ << link @$(DRV_NAME).crf !endif clean: -@del /Q $(BINDIR)\\* 执行nmake /f kptest.mak 出错,我该怎么改,请大虾指示。 |
|
沙发#
发布于:2003-05-12 20:44
你的问题解决了吗?
我也遇到了kernel plugin的问题 能给看一下吗 我在user mode下,已获得中断,但精度不够,所以想用KERPLUG方式, 但我在编译、链接windriver\\kerplug\\kptest时,总出错: Compiling... kptest.c C:\\WinDriver\\kerplug\\kptest\\kermode\\kptest.c(64) : warning C4013: \'memcpy\' undefined; assuming extern returning int kptest.obj - 0 error(s), 1 warning(s) Linking... LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main Debug/kptest.exe : fatal error LNK1120: 1 unresolved externals Error executing link.exe. kptest.exe - 2 error(s), 0 warning(s) 而且我按wizard进行,generate code-->select driver option时选:kenerl plugin 上面提示按住2000DDK,我安装了2000DDK,但还是编译不了呀, |
|
板凳#
发布于:2003-05-23 16:59
我要是斑竹就置顶,直到有人说出怎么改写为止。
或者哪位大虾说一下,要看什么书才能把那一段长长的命令看懂。 |
|
|
地板#
发布于:2003-06-03 23:27
我这里可以编译OK。不知道你们哪里为什么出问题哦!
不过要安装DDK,并设置DDK的路径才行。 |
|
|
地下室#
发布于:2003-06-04 21:17
好像不用修改顶上的代码吧?编译的时候回自己查询当前的Windows系统,若是Win95/98就生成Vxd,若是NT/2000就生成.sys文件。第二位编译Kptest.c文件时,在IDE中只能修改语法错误,致命的错误不用管,因为没有Main() 这个文件是不能编译成可执行文件的。修正错误之后再执行本目录中的compile.bat生成Vxd。编译VXd成功的前提是DDk安装并且路径设置正确
|
|