Windows驱动程序开发笔记一、WDK与DDK环境最新版的WDK 微软已经不提供下载了这里:https:/// 可以下并且这里有好多好东东!不要走进一个误区:下最新版的就好,虽然最新版是Windows Driver Kit (WDK) 7_0_0,支持windows7,vista 2003 xp等但是它的意思是指在windows7操作系统下安装能编写针对windows xp vista的驱动程序,但是不能在xp 2003环境下安装Windows Driver Kit (WDK) 7_0_0这个高版本,否则你在build的时候会有好多好多的问题.上文build指:首先安装好WDK/DDK,然后进入"开始"->"所有程序"->"Windows Driver Kits"->"WDK XXXX.XXXX.X" ->"Windows XP"->"x86 Checked Build Environment"在弹出来的命令行窗口中输入"Build",让它自动生成所需要的库如果你是要给xp下的开发环境还是老老实实的找针对xp的老版DDK吧,并且xp无WDK 版只有DDK版build自己的demo 有个常见问题: 'jvc' 不是内部或外部命令,也不是可运行的程序。
解决办法:去掉build路径中的空格。
二、下载 WDK 开发包的步骤1、访问Microsoft Connect Web site站点2、使用微软 Passport 账户登录站点3、登录进入之后,点击站点目录链接4、在左侧的类别列表中选择开发人员工具,在右侧打开的类别:开发人员工具目录中找到Windows Driver Kit (WDK) and Windows Driver Framework (WDF)并添加到您的控制面板中5、添加该项完毕后,选择您的控制面板,就可以看到新添加进来的项了。
6、点击Windows Driver Kit (WDK) and Windows Driver Framework (WDF),看到下面有下载链接,OK,下载开始。
下载后的文件名为:6.1.6001.18002.081017-1400_wdksp-WDK18002SP_EN_DVD.iso将近600M大小。
也可以试试这个地址:/downloads/en/details.aspx?displaylang=en&FamilyID=36a2630f-5d56 -43b5-b996-7633f2ec14ff直接点击下载。
三、安装 WDK 开发包1、使用虚拟光驱加载下载完成的镜像文件,然后运行2、选择相应的系统环境,如下图:3、接触,出现以下画面,在左侧的树形复选框中选择要安装的组件及工具,建议全部安装,选择好后点击―OK‖~~后面的就简单了~4、然后一路回车即可。
5、安装过程的注意事项,只有两点:(1)安装到一个简单一点的路径,避免在特殊情况下需要配置路径时麻烦,比如C:\WinDDK。
尤其要避免在路径上有空格,否则可能出现编译问题。
(2)一定要选择"完全安装",否则可能错过一些代码例子。
四、驱动开发环境搭建(VS2008+WDK+DDKWzard)在VS2008IDE中没有提供驱动开发的项目选项,当然可以用普通工程,然后手动在VS中配制相应的编辑连接以及调试选项,但是如此只来,每次都要重复些复杂的步骤。
在/网站上发现了一个很好用的辅助工具DDKWizard,能够方便地对开发环境进行配置,真是适合想我这样懒人啊,工具的作者也自称是因为懒惰才1、安装DDKWizard1)安装ddkwizard_setup,默认安装,一路Next点过即可,将DDKBUILD.CMD与DDKBUILD.BAT考到WDK的安装目录,或者其它目录也行,只要在后续的设置就行。
如:我将其放在wdk的目录下,如图2)设置环境变量a)添加相应的环境变量,如要开发XP系统下的驱动则添加WXPBASE,变量值为WDK的根目录path :系统变量需将G:\WinDDK添加到Path变量中否则编译时会出现找不到命令的错误新建系统变量变量名:WLHBASE ,图中我加了两个,只需第一个即可。
变量值为:G:\WinDDK\7600.16385.0 修改为你安装的wdk路径如下图b)Win7:2、打开VS 2008,菜单―工具‖->―选项‖->左侧―项目和解决方案‖->―VC++目录‖->右侧―可执行文件‖下拉列表->添加一项D:\WINDDK(根据你的实际情况,就是第1步中DDKBUILD.CMD与DDKBUILD.BAT所在的路径),增加WDK的根目录如图:到目此所有的设置工作都已完成。
自定义安装DDK目录的修改DDKW文件内容替换c:\WINDDK\ddkbuild.cmd为你DDK安装路径,另替换系统对应支持DDK目录,我的安装了最新的WINDOWS7的DDK,替换如图所示。
Win7:3、编写简单的驱动程序并测试我们的驱动开发环境1)在Visual C++选项卡中多了DDK Project的项目类型,选择相应的模板添加我们的项目,点击确定2)确定后出现DDKWzard的项目创建页面,在―Choose the DDKBUILD youwant to use‖中选择―ddkbuild.cmd‖或者―ddkbuild.bat‖,在其下面选择我们要为Who(2000,xp……)开发的驱动。
W7:替换默认路径c:\WINDDK\ddkbuild.cmd为自定义G:\WINDDK\ddkbuild.cmd替换默认路径c:\WINDDK\7600.16385.0 -》g:\WINDDK\7600.16385.0这里可以保持默认设置我这里修改了ddkw的默认设置G:\Program Files\DDKWizard\Wizards\Driver\HTML\1033\default.htm的内容Which <u>D</u>DK(s)/WDK(s) do you want to use:</label><br /><select size="4" id="DDK_CHOICE_LISTBOX" multiple="multiple" style="width:70%;"><option value="3" >Windows 7/2008 Server R2 WDK</option><option value="2">Windows Vista/2008 Server WDK</option><option value="1">Windows 2003 DDK</option><option value="0" selected="selected">Windows XP DDK</option></select>就是<option value="0" selected="selected">Windows XP DDK</option>其他配置(转):对于原版的那个,另我不爽的有以下几点:1,默认cpp,虽然可以改,但是还要点一下。
2,默认选中Create PREfast configuration,不爽。
3,默认选中两个ddk,不爽。
4,代码太乱了。
5,东西太杂了。
4、开始开发1)使其默认不选中" Stricter type checking (.cpp)"打开DDKWizard目录下的DDKWizard.ini文件,做如下修改:checkbox.STRICTERCPP的值为false。
2)不选中“Create PREfast configuration”打开DDKWizard.ini做如下修改:checkbox.PREFASTCONFIG = falsecheckbox.PREFASTCONFIG_ONLYCHECKED = false3)使其只选中一个ddk用记事本打开Wizards\Driver\HTML\1033\Default.htm搜索一下“longhorn”,然后做如下修改:<option value="0">Windows 2000 DDK</option><option value="1">Windows XP DDK</option><option value="2">Windows 2003 DDK</option><option value="3" selected="selected">Longhorn/Vista WDK</option>4)修改模板默认模板在Wizards\Driver\Templates\1033下,形式比较简单,自行参考原版进行修改即可。
需要添加删除文件修改Templates.inf中的相应文件即可,很是方便。
这样搞完以后,就可以一键生成自己熟悉的驱动模板,很爽。
5、最后Finish,这样就可以开始写我们的驱动程序了这里为了演示..我们什么也不做只打印输出"HelloEping"简单驱动程序代码如下注意保存为*.c格式我这里保存为test.c6、复制下面的代码:#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=test.c即可成功编译出否则编译成功后你会发现找不到驱动文件。