2011-06-02 19:51
开始之前要一定要明确一件事情,单独使用WDK+记事本就可以开发驱动,和VC的编译器耗无关系,而使用VC的唯一目的,就是把它当作超级记事本,这样可以省去自己维护Makefile的麻烦,并且拥有IDE的其他各种便捷。
1.安装好VC6和DWK,先后顺序无关。从开始菜单找到WDK的程序目录,进入“Windows XP Checked Build Environment”,输入命令"build",此时WDK将会把自己进行编译,大约需要1分钟。
2.VC6设置Include/Lib/Executable目录,设置为自己需要编译的平台的各个目录即可, Include要确保找到ntddk.h等,Lib与Include对应,Executable 要确保能找到cl.exe
例如XP平台下设置为:
include包含部分:
C:\WinDDK\7600.16385.1\inc\ddk
C:\WinDDK\7600.16385.1\inc\api
C:\WinDDK\7600.16385.1\inc\crt
lib连接库包含部分:
C:\WINDDK\7600.16385.1\LIB\WXP\I386
C:\WINDDK\7600.16385.1\LIB\WIN7\I386
执行文件包含:
C:\WINDDK\7600.16385.1\BIN
C:\WINDDK\7600.16385.1\BIN\X86
C:\WinDDK\7600.16385.1\bin\x86\x86
对于VC原有的路径,Include 和 Lib建议都删除掉,而Executable则将你新加的置顶,顺序不能错。其余建议保留(虽然编译驱动不会使用VC的Bin目录下的ml.exe、link.exe 等,但vc的代码提示等功能是需要bin目录下的一些程序来完成的,因此还是至少要保留VC原有的Bin目录,但必须在DDK的之后)。
3.建立一个空工程,Exe或者Dll都可以,然后直接修改工程属性:
要改的地方不少,描述各个选项还不如直接记录个文本的,清空C/C++和Link下面的Option文本框,按下面的填写。
C/C++ 选项填写:
/nologo /Gz /MLd /W3 /WX /Z7 /Od /D WIN32=100 /D _X86_=1 /D WINVER=0x500 /D DBG=1 /Fo"DriverDev___Win32_Driver_Free_Edtion/" /Fd"DriverDev___Win32_Driver_Free_Edtion/" /FD /c
LINK 选项填写:
NT式驱动为
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" /subsystem:native /driver /SECTION:INIT,D /RELEASE /IGNORE:4078
WDM式驱动为
wdm.lib /nologo /base:"0x10000" /stack:0x400000,0x1000 /entry:"DriverEntry" /subsystem:console /incremental:no /pdb:"SYS_Check/HelloWDM.pdb" /debug /machine:I386 /nodefaultlib /out:"SYS_Check/HelloWDM.sys" /subsystem:native /driver /SECTION:INIT,D /RELEASE /IGNORE:4078
4.保存配置,现在给这个空工程建一个c文件,复制以下内容:
#include <ntddk.h>
NTSTATUS DriverEntry(
IN PDRIVER_OBJECT DriverObject,
IN PUNICODE_STRING RegistryPath
)
{
NTSTATUS status = STATUS_UNSUCCESSFUL;
return status;
}
编译通过则配置成功!!!
网上这类资料多如牛毛,也许很多人都是转来转去,却很有人去真正的测试,有时候感觉确实对他人也是一种误导。
这里是我自己在VS2008 + WDK7600.16385.0 + DDKWizard配置自己的IDE开发环境的设置过程:
1、首先安装DDKWizard
官方网页:http://ddkwizard.assarbad.net/
从官方网页下载这三个重要的文件:DDKBUILD.BAT 、 DDKBUILD.CMD 、DDKWIZARD_SETUP。EXE
在WDK7600安装目录新建一个bat 目录,用来保存bat与cmd两个文件,再安装DDKWIZARD_SETUP.EXE。
2、VS2008中相关配置
在系统环境变量中添加一条记录:
Path E:/WinDDK/bat (刚刚从DDKWizard下载保存的两个文件对应的路径)
WXPBASE E:/WinDDK/7600.16385.0 (这条记录貌似可以不需要)
再打开VS2008工具/选项,依次添加如下记录:
a、可执行文件:
E:/WinDDK/7600.16385.0/bin/x86
E:/WinDDK/7600.16385.0/bin/x86/x86
E:/WinDDK/7600.16385.0/tools/pfd/bin/bin/x86
b、包含文件:
E:/WinDDK/7600.16385.0/inc/ddk
E:/WinDDK/7600.16385.0/inc/crt
E:/WinDDK/7600.16385.0/inc/api
c、引用文件:
E:/WinDDK/7600.16385.0/lib/wxp/i386
d、库文件:
E:/WinDDK/7600.16385.0/lib
E:/WinDDK/7600.16385.0/lib/wxp/i386
e、源文件:
E:/WinDDK/7600.16385.0/src
3、测试结果
新建工程:
选择XP DDK完成即可:
编译链接(ctrl + alt + F7):
以上设置测试完毕,剩下的就交给WinDbg、VPC等工具去完成啦......
这样,你也可以轻松的在VS2008这个集成的IDE开发环境中去编写驱动程序了~~~~
(PS:驱动其实并不难,难的是能否与自己的毅力“较劲”~~)