CSDN博客

img newkey007

怎样用 vc7 + xpddk 编译驱动程序

发表于2004/10/24 23:40:00  2641人阅读

1. 将 需要的文件(.h .c .cpp .asm .rc ..)加入到解决方案中
2. 在 解决方案中 右击 工程,调出 属性框,将常规中的配置类型 选成 “生成文件”
3. (再次只给出debug 版本方式,release 版本自己修改)选中 NMKE , 
在 “生产命令行” 填入
md Debug 2>NUL:
cd Debug
nmake -nologo ../Makefile DEBUG=1 

在 “全部重新生产命令行” 填入
rd /s /q Debug 2>NUL:
md Debug 2>NUL:
cd Debug
nmake -nologo ../Makefile DEBUG=1

在“清除命令行”填入
rd /s /q Debug 2>NUL:

在“输入” 填入
Debug/你的驱动名称.sys

4. 编写 makefile 文件(具体的makefile语法请自行查阅)
这里主要分 check 和 free 版本用变量分开写

DDK = D:/WINDDK/2600.1106
OS = wxp
BASENAME = zzz

CC = cl
ASM = ml

all: $(BASENAME).sys

!IFNDEF RELEASE

# debug
DEFINES_D = -D_X86_=1 -Di386=1 -DSTD_CALL -DCONDITION_HANDLING=1 /
-DNT_UP=1 -DNT_INST=0 -DWIN32=100 -D_NT1X_=100 /
-DWINNT=1 -D_WIN32_WINNT=0x0400 -DWIN32_LEAN_AND_MEAN=1 -DDBG=1 -D_DEBUG -DDEBUG -DDEVL=1 /
-DFPO=0 -D_DLL=1 -D_IDWBUILD -DRDRDBG -DSRVDBG -DDBG_MESSAGES=1 /
-D_UNICODE -DLITTLE_ENDIAN

CFLAGS_D = $(DEFINES_D) -Zel -Zp8 -Gy -cbstring -Gz -QIfdiv- -QIf -Gi- -Gm- -GX- /
-GR- -GF -FI$(DDK)/inc/$(OS)/warning.h -Zi -Od -Oi -Oy- -W3

LFLAGS_D = -MERGE:_PAGE=PAGE -MERGE:_TEXT=.text -SECTION:INIT,d /
-INCREMENTAL:YES -FORCE:MULTIPLE -DEBUG -PDB:$(BASENAME).pdb -FULLBUILD /
-IGNORE:4001,4037,4039,4065,4070,4078,4087,4089,4096 -NODEFAULTLIB /
-debug -version:4.00 -osversion:4.00 -debugtype:cv /
-MERGE:.rdata=.text -MAP:$(BASENAME).map -driver -align:0x20 /
-subsystem:native,4.00 -base:0x10000 -entry:DriverEntry@8

!ELSE

# Release
...
!ENDIF

CRYPTOOBJ = xx.obj

LINK_D = link $(LFLAGS_D) -nologo -out:$(BASENAME).sys -machine:IX86 /
 $(DDK)/lib/$(OS)/i386/ntoskrnl.lib /
 $(DDK)/lib/$(OS)/i386/hal.lib

CFLAGS = $(CFLAGS_D) -nologo -DNT4_DRIVER -I$(DDK)/inc/$(OS) -I$(DDK)/inc/ddk/$(OS) -I$(DDK)/inc/ddk/wdm/$(OS)

{..}.c{}.obj :
 $(CC) -c $(CFLAGS) -I../../yyy -I../../xxx $<

{../../xxx}.c{}.obj :
 $(CC) -c $(CFLAGS) -I../../yyy -I../../xxx $<

{../../xxx}.c{}.obj :
 $(CC) -c $(CFLAGS) -I../../yyy -I../../xxx $<

{../../yyy}.asm{}.obj :
 $(ASM) $(ASMFLAGS) $<
 
{..}.rc{}.res :
 rc -r -D_X86_ -fo driver.res $<

!IFNDEF RELEASE
ASMFLAGS = /coff /Zm /c /Cp /Zi /D_DEBUG
!ELSE
ASMFLAGS = /coff /Zm /c /Cp /DNDEBUG
!ENDIF


...

阅读全文
0 0

相关文章推荐

img
取 消
img