最近准备学习Windows驱动开发,无奈以前从未接触过此类知识,于是打算从头开始自学,顺便分享点经验给那些同样一筹莫展的同学。
要想开发驱动程序,首先得搭建开发环境。下面是根据网上资料和自己的经验整理的笔记。
软件环境:Windows XP、VC2008、DDK2.1、DriverStudio 3.2
一、安装VC2008,这个没有难度,相信大家都能解决,这里不再多说。
二、 安装 DDK XP 。
网上有很多下载地址,但是好多已经不能用了,我给大家提供一个DDK下载地址http://visualddk.sysprogs.org/
DDKWizard下载地址 http://ddkwizard.assarbad.net/ 安装过程如下图:
三、 安装 DDKWizard
DDKWizard 安装一路 Next 即可。
四、 Ddkbuild.cmd
http://ddkwizard.assarbad.net/ 下载 ddkbuild.cmd 和 ddkbuild.bat 。 然后将 将ddkbuild.cmd 拷贝到特定DDK 版本安装的父目录下,例如,我的DDK XP的安装目录是D:/WINDDK/2600 ,就将 ddkbuild.cmd 拷贝到D:/WINDDK 目录下。在此说明一下,安装DDK 时,无论是DDK XP 、DDK 2003或DDK Vista ,最好不要改变安装时的默认目录名称,例如XP 的目录是2600 ,2003 的目录是3790.1830 ,因为如果改了目录名称,还要对DDKWizard 进行 更多的修改,麻烦,也没必要。
五、 配置环境变量
将上述文件(DDKBUILD.bat 和 DDKBUILD.cmd )的路径添加到系统的path 变量( 右击我的电脑, 系统属性/ 高级/ 环境变量/ 系统变量/path 变量双击修改值) 。 根据你所安装的DDK 的不同版本添加不同的变量到系统变量中。
右击我的电脑, 系统属性/ 高级/ 环境变量/ 系统变量/ 新建:
2000 DDK 则变量名为: W2KBASE
XP DDK 则变量名为: WXPBASE
2003 sp1 DDK 则变量名为: WNETBASE
这里我的是WNETBASE( 值为D:/WinDDK/2600)
六、 Visual Studio 配置
打开VS 2008 ,菜单“ 工具”->“ 选项”-> 左侧“ 项目和解决方案”->“VC++ 目录”-> 右侧“ 可执行文件” 下拉列表-> 添加一项D:/WINDDK( 根据你的实际情况) 。在 VS 的选项中如下配置,即可执行文件中添加 DDK 的目录,
然后,在 show directoriesfor 选择 Library files ,并添加链接库,例如我的是 D:/WINDDK/2600/lib/wxp/i386
设置包含文件(D:/WINDDK/2600/inc/wxp; D:/WINDDK/2600/inc/ddk/wxp )
至此,设置工作就都完成了。
七、 编译 Sys 文件
1. 新建一个空的驱动程序项目
2. 点击确定后,出现DDKWizard 选项对话框
注意,选择 XP DDK ,建议是不要选上 Create PREfast configuration
在source文件中写入
TARGETNAME=HelloDDK //驱动名
TARGETTYPE=DRIVER
TARGETPATH=OBJ
INCLUDES=$(BASEDIR)\inc;\
$(BASEDIR)\inc\ddk;\
SOURCES=Driver.cpp\ //源文件
然后在源文件中添加自己的代码,点击重新生成就可以了
在项目文件加下会生成一个.sys的文件,那么就说明你成功了。
八、加载驱动
可以利用一个叫做DriverMonitor的工具软件加载驱动,DriverMonitor是Compuware公司开发的DriverStudio中的一个工具。网上有很多,大家可以自己下载安装。运行DriverMonitor,选择“File”|“Open Driver”,将会弹出文件选择对话框,选择编译好的.sys文件。再次选择“File”|“start Driver”。至此,NT驱动加载成功,DriverMonitor会报告加载情况。