在《windows驱动开发技术详解》中作者提供了两种调式内核程序的方法,有两种编译驱动的办法,一种是用DDK环境来编译,需要在源代码所在目录下创建两个文件makefile和Sources,另一种为vc搭配DDK使用,但不需要写makefile和source文件,
第一种 DDK环境来编译
写好文件,在开始菜单中选择“Windows XP Checked Build Environment”编译环境,用cd命令进入需要编译的目录,输入”build“命令就可以,编译后的驱动位于objchk_wxp_x86"i386目录下,名为HelloDDK.sys
第二种编译方式是使用VC++进行编译
1,用vc新建工程。在"project"选项卡中,选择win32 Application,选择一个空的工程。
2,将两个源文件Driver.h和Driver.cpp拷贝到工程目录中,并添加到工程中。
3,增加新的编译版本,去掉Debug 和Release 版本,增加一个Win32 Driver Check Edition
4,修改工程属性。选择"Project|Setting",或者直接按下Alt+F7键,弹出"Project Settings"。在对话框中,选择“General”选项卡。将Intermediate files和Output files都改为MyDriver_Check.
5,选择C/C++选项卡,将原有的Project Options 内容全部删除替换成如下内容:
/nologo /Gz /MLd /W3 /WX /Z7 /Od /D WIN32=100 /D _X86_=1 /D WINVER=0x500 /D DBG=1 /Fo"MyDriver_Check/" /Fd"MyDriver_Check/" /FD /c
6,选择Link选项卡,将原有的Project Options 内容全部删除,替换成如下内容
ntoskrnl.lib /nologo /base:"0x10000" /stack:0x400000,0x1000 /entry:"DriverEntry" /subsystem:console /incremental:no /pdb:"MyDriver_Check/HelloDDK.pdb" /map:"MyDriver_Check/HelloDDK.map" /debug /machine:I386 /nodefaultlib /out:"MyDriver_Check/HelloDDK.sys" /pdbtype:sept /subsystem:native /driver /SECTION:INIT,D /RELEASE /IGNORE:4078
7。修改VC的lib目录和include目录。
在vc中选择"Tools"|"Options",在弹出的对话框中选择“Directories”选项卡。在“Show directories for”下拉菜单中选择“Include files”菜单,添加
D:/WINDDK/3790.1830/INC/W2K
D:/WINDDK/3790.1830/INC/DDK/W2K
并将这两个目录置于最上。
在"Show directories for "下拉菜单中选择“Library files”菜单,添加目录
D:/WINDDK/3790.1830/LIB/W2K/I386
并置于最上端。
8,按照书上所述的步骤做完后编译,会报错如下:
fatal error C1083: Cannot open include file: 'specstrings.h': No such file or directory
原因是include目录设置没完整,加入如下目录既可以正确编译
D:/WINDDK/3790.1830/INC/CRT
当然,以上设置为调式NT式的驱动程序,如果你调式WDM式的驱动程序,vc会提示找不到WDM.H头文件,这是我们应该在
在vc中选择"Tools"|"Options",在弹出的对话框中选择“Directories”选项卡。在“Show directories for”下拉菜单中选择“Include files”菜单,添加
D:/WINDDK/3790.1830/inc/ddk/wdm/w2k
这时再摁F7,你就会发现程序就正常执行了,终于解决了这个小问题。。
舒服、、、、、