VS2008+WDK 文件过滤驱动程序 开发环境配置

 许多驱动程序开发都将环境架设在VC上,可是偶的本本上好不容易安了个vs2008,舍不得删啊,因此毅然选择vs2008,抛弃vc。要开发驱动,DDK是少不了的,但是现在操作系统日新月异,老DDK是不能适应国家下一个“五十年计划”滴~~于是,我又一次毅然决然选择WDK代替DDK,呵呵,还是跟着微软大虾们的足迹,往前看吧......

       

       先弄明白windows驱动的前因后果吧,这是选择开发环境和开发过程的基础~

      

1.首先,开发WINDOWS下的驱动程序,需要一个专门的开发包,就像开发JAVA程序,需要一个JDK,开发WINDOWS应用程序,需要SDK,现在开发WINDOWS下的驱动程序,我们们需要一个DDK/WDK。

2.开发驱动的工具包DDK(Driver Developer Kit)和WDK(Windows Driver Kit)的区别:

  1).95/98/ME下,驱动模型为:Vxd,相关资料可以看《编程高手箴言》的前几个章节,里面有很详细的介绍,虽然这个东西已经过时,但大概看看还是会增长见识的。

  2).2000/XP/2003下,Windows采用WDM驱动模型(Windows Driver Model),开发2000/XP/2003的驱动开发包为:DDK。

  3).Vista及以后版本,采用了WDF驱动模型(Windows Driver Foudation),对应的开发包:WDK。

其实WDK可以看做是DDK的升级版本,现在一般的WDK是包含以前DDK相关的功能,现在XP下也可以用WDK开发驱动,WDK能编译出2000-2008的各种驱动。

  3.Vxd驱动文件扩展名为:.vxd。

     WDM和WDF驱动文件扩展名为:.sys。

       下面将整个环境搭建过程描述如下:

*******************************************************************************************

一、安装阶段

1.        (虚拟机也可以不安装) 安装WinXP虚拟机,VMware,系统安装的是WinXP_Pro_SP2.iso。

        下载地址:http://58.251.57.206/down?cid=34B1A802316A542966F8D99F233970B8FC150C17&t=2&fmt=&usrinput=vmware workstation 7&dt=1002022&ps=0_0&rt=0kbs&plt=0

        安装虚拟机可以用于调试,避免在真机上调试的时候,频繁出现蓝屏,重启等现象。自己的环境,安全第一啊~~安装好虚拟机后,还需要在虚拟机上安装上XP系统。

2.          安装Visual Studio 2008,安装前请留出足够大的空间,至少7G。

3.          安装WDK。注意安装时会选择要安装的内容,此时不要安装DSF。当然啦,安全前得下载啊~~ 这个现在可以再微软的官网上申请下载,给大家个网址吧https://connect.microsoft.com/default.aspx,这是connect的网址,你需要注册一个liveID,然后在左侧栏里找到“开发人员工具”,然后就能找到WDK了,申请,下载,OK~

        传说WDK支持Windows 7, Windows Vista, Windows XP, Windows Server 2008 R2, Windows Server 2008, and Windows Server 2003.等等版本系统,不仅包含了原有DDK,还貌似包含了IFS的头文件,哎哟,貌似很有用呢,能适应长期发展.....(关于WDK的介绍与安装,请参考偶的后续博文~~)

4.        安装srvinstw.exe,用于安装生成的服务。

5、   安装DDKWIZARD,安装它主要是为了使你的vs支持驱动程序开发。并将其中的ddkbuild.cmd,和ddkbuild.bat两个文件放置到WDK的安装目录下,也就是C:\WinDDK下

*********************************************************************************************

二、配置阶段

0、 我的电脑-》属性-》高级-》环境变量》用户变量中    Path 后添加 C:\WinDDK\DDKBUILD.bat;C:\WinDDK\DDKBUILD.cmd;C:\WinDDK

          然后再在系统变量中新建变量,根据不同的系统,选择下列中一个:

         2000 DDK: W2KBASE

        XP DDK: WXPBASE

        2003 sp1 DDK: WNETBASE

        【注】变量名应与你要使用的DDK版本相符,比如我要开发XP驱动,使用XPDDK,所以变量名为WXPBASE,其值为:C:\WinDDK\7600.16385.0

1、打开VS2008,在菜单上选择"工具"->"选项"弹出"选项"窗口,选择"项目和解决方案"->"VC++目录","显示以下内容的目录"

"可执行文件"中添加

    "C:\WinDDK"

    "C:\WinDDK\7600.16385.0\bin\x86\x86"

    "C:\WinDDK\7600.16385.0\bin\x86"

    "C:\WinDDK\7600.16385.0\tools\pfd\bin\bin\x86"

"包含文件"中添加

    "C:\WinDDK\7600.16385.0\inc"

    "C:\WinDDK\7600.16385.0\inc\api"

    "C:\WinDDK\7600.16385.0\inc\crt"

    "C:\WinDDK\7600.16385.0\inc\ddk"

"引用文件"中添加

    "C:\WinDDK\7600.16385.0\lib\wxp\i386"

"库文件"中添加

    "C:\WinDDK\7600.16385.0\lib"

    "C:\WinDDK\7600.16385.0\lib\wxp\i386"

"源文件"中添加

    "C:\WinDDK\7600.16385.0\src"

    以上添加完毕直接按"确定"关闭"选项"对话框

    如果编译出现C2144错误的时候,请把以上添加的文件向前移动(就是点击"选项"对话框中的向上的箭头按钮)

2、设置虚拟机的可调模式:

    1)打开boot文件的方式可以选用以下两种:

         1.我的电脑→属性→高级→“启动和故障恢复-->编辑。 
2.运行→“msconfig”→boot.ini

         boot.ini的修改如下:

       在虚拟机中,编辑boot.ini文件,在末尾添加一行:multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect /debug /debugport=com1 /baudrate=115200

   

    2)保存后power off虚拟系统。在左边栏中选择Edit virtual machine settings-->add-->Serial Port-->Output to named pipe,此时出现三个文本框,依次填入:\\.\pipe\com_1”和“This end is the server.”,第3个修改为“The other end is an application.”

     3)保存。配置真实机。创建windbg.exe在桌面的快捷方式,属性-->目标-->"C:\WINDDK\...\windbg.exe“ -b -k com:port=\\.\pipe\com_1,baud=115200,pipe

    4)可以选择配置真实机串口:我的电脑-->管理-->设备管理器-->端口com-->com1-->属性-->端口设置-->每位秒数-->115200

     5) 启动windbg.exe, 在file-->symbol file path ,添加微软官方符号表srv*c:\symbols*http://msdl.microsoft.com/download/symbols 以及你自己工程中生成sys文件的目录(就是你要编译的驱动服务文件的目录,需要事先生成要调试的驱动服务.sys文件,并将.sys文件拷贝到虚拟机中),我的是E:\projects\Tests\first\objchk_wxp_x86\i386 ,两路径用分号分隔。勾选reload

    6)启动虚拟机,将sys文件提供的服务用srvinstw.exe安装到虚拟机中。安装中,选手动,NT驱动不用填

    7)重启虚拟机,选择调试模式,启动真实机桌面设置过参数的windbg快捷方式,此时如果出现

--------------------------
WinDbg:6.10.0003.233 X86 
---------------------------
Could not start kernel debugging using com:pipe,port=\\.\pipe\vpcdebug,resets=10 parameters, Win32 error 0n2

Could not start kernel debugging using com:pipe,port=\\.\pipe\com1,resets=10 parameters, Win32 error 0n2

系统找不到指定的文件。

说明虚拟机还没有启动起来,只需要重启windbg。在系统出现中断时,在windbg中输入g。

    8)进入到系统后,运行-->cmd-->net start 服务名   就可以启动你的驱动服务了。

****************************************************************************************************************************

新建项目:

1) VS2008-->新建项目-->DDK project-->Driver

2)F7,运行,如果没有生成sys,或者出现任何对话框,说明你配置出错啦~~ 有可能是在TOOL--->选项-->项目与解决方案-->VC++目录-->可执行文件 下,缺少了你放置DDKwizard的ddkbuild.cmd文件的目录,请填上。或者是你的环境变量没设对....

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本书非常适合熟悉Windows应用编程的读者转向驱动开发。所有的内容都从最基础的编程方法入手。介绍相关的内核API,然后举出示范的例子。这本书只有不到70页,是一本非常精简的小册子。所以它并不直接指导读者开发某种特定类型的驱动程序。而是起到一个入门指导的作用。 即使都是使用C/C++语言的代码,在不同的应用环境中,常常看起来还是大相径庭。比如用TurboC++编写的DOS程序代码和用VC++编写的MFC应用程序的代码,看起来就几乎不像是同一种语言。这是由于它们所依赖的开发包不相同的缘故。 在任何情况下都以写出避免依赖的代码为最佳。这样可以避免重复劳动。但是我们在学习一种开发包的使用时,必须习惯这个环境的编码方式,以便获得充分利用这个开发包的能力。 本书的代码几乎都依赖于WDK(Windows Driver Kit)。但是不限WDK的版本。WDK还在不断的升级中。这个开发包是由微软公司免费提供的。读者可以在微软的网站上下载。 当然读者必须把WDK安装的计算机上并配置好开发环境。具体的安装和配置方法本书没有提供。因为网上已经有非常多的中文文档介绍它们。 读完这本书之后,读者一定可以更轻松的阅读其他专门的驱动程序开发的文档和相关书籍。而不至于看到大量无法理解的代码而中途放弃。如果有任何关于本书的内容的问题,读者可以随时发邮件到[email protected]或者[email protected]。能够回答的问题我一般都会答复。 写本书的时候,我和wowocock合作的一本名为《天书夜读》(在网上有一个大约20%内容的缩减电子版本)正在电子工业出版社编辑。预计还有不到一个月左右就会出版。这也是我自己所见的唯一一本中文原创的从汇编和反汇编角度来学习Windows内核编程和信息安全软件开发的书。希望读者多多支持。有想购买的读者请发邮件给我。我会在本书出版的第一时间,回复邮件告知购买的方法。 此外我正在写另一本关于Windows安全软件的驱动编程的书。但是题目还没有拟好。实际上,读者现在见到的免费版本的《Windows驱动编程基础教程》是从这本书的第一部分中节选出来的。这本书篇幅比较大,大约有600-800页。主要内容如下: 第一章驱动编程基础 第二章磁盘设备驱动 第三章磁盘还原与加密 第四章传统文件系统过滤 第五章小端口文件系统过滤 第六章文件系统保护与加密 第七章协议网络驱动 第八章物理网络驱动 第九章网络防火墙与安全连接 第十章打印机驱动与虚拟打印 第十一章视频驱动过滤 附录A WDK的安装与驱动开发环境配置 附录B 用WinDbg调试Windows驱动程序 这本书还没有完成。但是肯定要付出巨大的精力,所以请读者不要来邮件索取完整的免费的电子版本。希望读者支持本书的纸版出版。因为没有完成,所以还没有联系出版商。有愿意合作出版本书的读者请发邮件与我联系。 凡是发送邮件给我的读者,我将会发送邮件提供本人作品最新的出版信息,以及最新发布的驱动开发相关的免费电子书。如果不需要这些信息的,请在邮件里注明,或者回复邮件给我来取消订阅。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值