使用vs2008+wdk7600编译遇到的坑

 

1.DDKBLD: ERROR #3: To build using type W7 you need to set the %W7BASE% environment variable to point to the Windows 7/Windows 2008 Server R2 DDK base directory!

这是因为DDKBUILD.CMD设置的wdk7600版本和自己安装的版本不一致,搜索DDKBUILD.CMD里面 找到DetectBaseDirTemp,改成自己wdk7600安装的版本。

就ok了,所以你要先确定你的ddk版本,如果是Win7,那么就要设W7BASE,但是原始的DDKBUILD.cmd中没有,就需要你自己添加,方法可以参考WLHBASE:
set BASEDIROS=Windows Vista/Windows 2008 Server
set BASEDIRVAR=WLHBASE
:: Compatibility between BUILD and VS ... prevent pipes from being used
%OSR_ECHO% Clearing %%VS_UNICODE_OUTPUT%% ...
set VS_UNICODE_OUTPUT=
:: Return to caller if the BASEDIR is already defined (either customized or global)
if DEFINED %BASEDIRVAR% goto :CommonCheckNoErrorWithReturn
::call :DetectBaseDirTemp "6001.18000 6000"
call :DetectBaseDirTemp "6001.18001"
if DEFINED BASEDIRTEMP if exist "%BASEDIRTEMP%" goto :CommonCheckSetVarWithReturn
goto :CommonCheckErrorNotSupportedWithReturn

2.找到不ntddk.h

sources加上
INCLUDES=$(WDMROOT);$(DDK_INC_PATH)

另外编译时Sources文件如下

TARGETNAME=YourDriverName(随便取一个名字替换YourDriverName,比如hellodrv,无.sys后缀)
TARGETPATH=debug
TARGETTYPE=DRIVER
SOURCES=main.c \(\是换行包含更多文件,如果你只有一个main.c,就不要\)
	    other.c(other.c只是一个例子,你如果没有写这个文件,就不要包含)
----------下面的字段,在hello world驱动里暂时不要加入---------
Sources文件其它字段(暂时不需要在SOURCE里加入):
C_DEFINES = $(C_DEFINES) –DYOUR_DEFINES
INCLUDES=$(INCLUDES);..\inc; $(WDMROOT);$(DDK_INC_PATH)
TARGETLIBS=$(TARGETLIBS) \
	      $(DDK_LIB_PATH)\ndis.lib

PRECOMPILED_INCLUDE=precomp.h
DRIVERTYPE=FS

makefile文件

!INCLUDE $(NTMAKEENV)\makefile.def

注意:makefile和sources文件都无后缀名

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值