驱动开发安装配置-0
接下来的我们便要设置环境变量了 需要设置的地方有两个 1、path 需将D:\WinDDK添加到Path变量中 否则编译时会出现找不到命令的错误 2、新建系统变量 右击我的电脑(我的是VISTA)然后 点击 高级系统设置 如下图:驱动开发安装配置-1 然后点击环境变量 弹出如下图的窗口
变量名:WLHBASE 变量值为:D:\WinDDK\6001.18002 修改为你安装的wdk路径 如下图驱动开发安装配置-2
win7要添加环境变量
W7BASE = D:\WinDDK\7600.16385.0
实际上我的版本是 D:\WinDDK\7600.16385.1 需要根据实际的来
点 新建-新建系统变量 输入 变量名:WLHBASE 变量值:D:\WinDDK\7600.16385.0 如下图:
D:\WinDDK\7600.16385.0 请修改你的WDK安装的路径
驱动开发安装配置-3
然后打开VS2008SP1 选择 工具-选项 展开项目和解决方案-VC++ 目录
然后点 新行 输入你的WDK 根目录 比如 我的D:\WinDDK 下图:
驱动开发安装配置-4
到此 所有目录设置就已经完毕
我们来打开一个新项目,点菜单 新建 可以看到 多出了一个 DDK项目,我们选择 空驱动 如图:
驱动开发安装配置-5
接下来会出现一个向导框 如下图:我们选择VISTA,请根据你的系统选择!
驱动开发安装配置-6
然后点击Finish 完成,就可以编写驱动程序了!
这里为了演示 我们什么就输出或者打一段文字即可! 代码如下:注意后缀文件名为.c
#include<ntddk.h> VOID DriverUnload(PDRIVER_OBJECT driver) { DbgPrint("HelloEping\r\n"); } NTSTATUS DriverEntry(PDRIVER_OBJECT driver,PUNICODE_STRING reg_path) { DbgPrint("Hello,Eping!"); driver->DriverUnload=DriverUnload; return STATUS_SUCCESS; }注意:sources文件中TARGETTYPE= 默认生成的代码 需要改为TARGETTYPE=DRIVER SOURCES=默认也为空 我把它改成SOURCES=1.c(1.c是上面的源文件名称,请按照你自己保存的文件名改变)即可成功编译出 否则编译成功后你会发现找不到驱动文件
如图:
驱动开发安装配置-7
然后开始编译:
1>EmptyDriver1.WLH - 0 个错误,0 个警告 ========== 生成: 成功 1 个,失败 0 个,最新 0 个,跳过 0 个 ==========
看到这个提示信息就说明成功了,我们打开 目录 ..\EmptyDriver1\objchk_wlh_x86\i386
可以看到目录下有个 EmptyDriver1.sys 这就是我们编写的第一个驱动程序,到此,到目前为止 最新的驱动开发环境就配置完成了。
驱动开发安装配置-8
2010年6月10号更新:
WDK最新版本下载地址 WDK7.1.0:http://download.microsoft.com/download/4/A/2/4A25C7D5-EFBE-4182-B6A9-AE6850409A78/GRMWDK_EN_7600_1.ISO 安装方法和上面一样
关于配置VS2010驱动功能如下,先安装好WDK后
打开VS2010中文版 选择 新建-文件-项目-选择空项目 如图1:
VS2010驱动开发环境配置-1
------------------------------------------------------下面是一段别人遇到的问题,不知道有没有用----------
在DDKBUILD.CMD里面 找到DetectBaseDirTemp,我设的WLHBASE,我没有看到W7BASE, 由于我的ddk版本是 6001.18001,而这个文件里用的是6000,18001,所以报跟你相同的错误,我把文件里的version改成6001.18001,就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
