Jesses

集中精神
posts - 14, comments - 13, trackbacks - 0, articles - 18
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

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

Posted on 2009-12-30 20:28  Jesses  阅读(...)  评论(...编辑  收藏

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变量中 
否则编译时会出现找不到命令的错误 
新建系统变量 
变量名:WLHBASE ,图中我加了两个,只需第一个即可。
变量值为:G:\WinDDK\7600.16385.0   修改为你安装的wdk路径 
如下图 

  

  
 W7:

五、打开VS2008Tools(工具)——>Options(选项)——>Projects and Solutions(项目和解决方案)中的VC++ Directories (vc++目录)增加WDK的根目录如图:到目此所有的设置工作都已完成。自定义安装DDK目录的修改DDKW文件内容 替换c:\WINDDK\ddkbuild.cmd为你DDK安装路径,另替换系统对应支持DDK目录,我的安装了最新的WINDOWS7的DDK,替换 六 中第二图所示。

如下图


 
 
 
  

 

W7: 

六、编写简单的驱动程序并测试我们的驱动开发环境1、新建一个project选择DDK Project 中的 Empty driver如图接下来会跳了一个DDKWizard向导的一个对话框如图

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,东西太杂了。


开始搞。

1,使其默认不选中" Stricter type checking (.cpp)"
   打开DDKWizard目录下的DDKWizard.ini文件,做如下修改:
   checkbox.STRICTERCPP的值为false。

2,不选中“Create PREfast configuration”
   打开DDKWizard.ini
   做如下修改:
   checkbox.PREFASTCONFIG = false
   checkbox.PREFASTCONFIG_ONLYCHECKED = false

3,使其只选中一个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,5 修改模板
    默认模板在Wizards\Driver\Templates\1033下,形式比较简单,自行参考原版进行修改即可。
    需要添加删除文件修改Templates.inf中的相应文件即可,很是方便。


这样搞完以后,就可以一键生成自己熟悉的驱动模板,很爽。

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
如图