VS2008 PRO 、WDK 和DDKWizard搭建驱动开发环境

来源:互联网 发布:昂达电脑怎么样知乎 编辑:程序博客网 时间:2024/06/10 01:46

Vista环境差不多请看http://www.cnblogs.com/eping/archive/2009/02/14/1390648.html

这里详说下XP的,修改了上面那篇, 也做个记录,开始研究驱动了,VC++也要学好!

标题:VS2008 PRO 、WDK 和DDKWizard搭建XP驱动开发环境       
作者:Jesses
时间:2009.12  

一下引用了作者:eping的文章内容并根据我的环境做了修改    

说明:pediy 有篇VS2008、DDK XP和DDKWizard搭建驱动开发环境的文章。作者为bleyes  ,本人在搭建vista驱动开发环境时遇到了些问题..故对其再做一些总结....希望后来的读者遇到有跟我同样的问题时能少走弯路.......在此向前作者表示感谢!                     
一、安装VS2008(我用的是专业版+SP1,速成版本就免了) 
二、安装Visual Assist (这不是必需的,我后来装了,似乎启动变慢不少)但它确是我们开发时不可多得的好工具 
三、安装WDK 
下载WDK及安装细节省略 NEXT就行,如果路径不是默认安装C盘,需要修改DDKWizard 配置文件。
四、安装DDKWizard 
下载地址:http://ddkwizard.assarbad.net/ 
需要下载的文件有 
1、ddkwizard_setup.exe 
2、ddkbuild_bat.zip 
3、ddkbuild_cmd.zip 
安装第一个文件跟安装普通程序一样只需要按默认设置即可 
2、3两个文件只需要解压copy到我们的wdk所有的根目录即可 
如图:
 
接下来的我们便要设置环境变量了 
需要设置的地方有两个 
1、path :系统变量
需将G:/WinDDK添加到Path变量中 
否则编译时会出现找不到命令的错误 
2、新建系统变量 
变量名:WLHBASE ,图中我加了两个,只需第一个即可。
变量值为:G:/WinDDK/7600.16385.0   修改为你安装的wdk路径 
如下图 

  


五、打开VS2008 
Tools(工具)——>Options(选项)——>Projects and Solutions(项目和解决方案)中的VC++ Directories (vc++目录)
增加WDK的根目录 
如图:  


  
到目此所有的设置工作都已完成。 
自定义安装DDK目录的修改DDKW文件内容 替换c:/WINDDK/ddkbuild.cmd为你DDK安装路径,另替换系统对应支持DDK目录,我的安装了最新的WINDOWS7的DDK,替换 六 中第二图所示。

如下图


六、编写简单的驱动程序并测试我们的驱动开发环境 
1、新建一个project 
选择DDK Project 中的 Empty driver 
如图  

 

接下来会跳了一个DDKWizard向导的一个对话框 
如图 



 

这里可以保持默认设置 我这里修改了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>

其他配置不记得怎么替换了 ,下次再重装来补充
Finish 后就可以开始写我们的驱动程序了 
这里为了演示..我们什么也不做只打印输出"HelloEping" 
简单驱动程序代码如下 
注意保存为*.c格式 我这里保存为test.c 
复制代码

  1. #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即可成功编译出 否则编译成功后你会发现找不到驱动文件 
图释: 这个图中的我这里不需要改了,不知道为什么。不过SOURCE默认是项目中的源文件后缀CPP,如果修改了为C那就要改下了。


在D:/Users/Eping/Desktop/TestDriver/TestDriver/objchk_wlh_x86/i386生成的驱动文件TestDriver.sys
如图

原创粉丝点击