驱动程序环境搭配(VS2010 + WDK + VirtualDDK + VMware)

以前一直都是用 VS2008 + DDKWizard + WinDbg 来进行驱动程序的开发调试的,

使用 DDKWizard 来搭配调试环境呢,在 VS2008 下也还算方便,

因为不需要自己去设置一些什么包含文件啊,源代码路径啊之类的就可以直接编译驱动程序源码,

安装好 DDKWizard 后,在 VS2008 中就会自动出现一个开发驱动程序的项目框架,

就跟选择创建 WinForm 应用程序一样的,创建好 DDK 项目后也是可以直接在 VS2008 下编译的,

所以在开发上也还方便,但是在调试上的话,就麻烦了,

在 WinDbg 中有一大堆东西要设置,在虚拟机上也要设置一些命令,

关于 WinDbg + VMware 开发调试驱动程序在网上有比较有名的酒若琳的文章,

不过那是很多年以前的文章了,有兴趣的可以去谷歌搜索 "酒若琳 WinDbg" ,应该是可以找到那篇文章的。

同时对于这一块的使用,也可以参考笔者的文章《驱动开发 – WDK 调试及 SVN 环境搭配》,

博文地址为:http://www.cnblogs.com/BoyXiao/archive/2011/05/06/2038578.html

但是在使用 DDKWizard + VS2008 进行驱动开发时,是不能够直接通过 VS2008 来调试的

(这里可能有其他门路来实现,但是笔者没有实现过),

而一般都是在 WinDbg 中设置好符号文件的路径以及源代码的路径,然后再驱动程序的源代码中嵌入一些汇编代码,

当然这些汇编代码只是简单的用来实现一个中断,从而在 WinDbg 调试器中会生成一个断点。

这样调试起来速度慢,也不好控制,所以有时候觉得在做开发的时候,在调试上花去的时间太多了,会不爽。

                                       

在本次博文中,将要介绍的是一个开源项目 VirtualDDK(VirtualKD 中包含了 VirtualDDK),

通过这个开源项目即可以很好的实现在 VS2010 以及 VS2008 下直接调试驱动程序,

同时对于 VirtualDDK 的环境搭配也是很简单的,下面就直接上一些图片以及一些注解来说明,

由于文章存在大量的截图,所以读者只要按着截图来做基本上都是可以成功的。

同时下面给出官网上的一篇关于利用 VirtualDDK 和 VS 来调试驱动程序的文章(内容非常详细),

基本上通过笔者的这篇博文和官网上的博文就完全可以搭建驱动程序开发环境成功了 !

同时在官网上的环境为 VS2008 的。而且在官网的博文中还有两个比较好的驱动例子の !

  • 1. A dummy driver that simply prints a message when it is loaded .

  • 2. A ramdisk driver, that creates a virtual hard disk .

《Making Your First Driver – Complete WalkThrough》

博文地址为:http://articles.sysprogs.org/visualddk/firstdriver/

         

                                       

前期设置:

               

安装虚拟机和 VS2010,然后再网络和共享中心中进行一些设置,

设置即是将本地连接网卡,安装虚拟机后生成的两块虚拟网卡的 IP 地址都改为自动获取 IP 地址,

同时需要修改一块虚拟网卡的共享属性。

2011-07-31_142418

2011-07-31_142322

2011-07-31_142238

2011-07-31_142205

在虚拟机中安装好 Windows 操作系统并且设置网卡类型为 NAT 类型

image

将本地主机开启远程,并且将本地主机的防火墙全部关掉

(这一步,看你运气了,有时候不设置这些东西,在 VS2010 下也是可以利用 VirtualDDK 调试驱动程序成功的,

但是你人品不好的时候就难说了,就比如我自己,前些日子不设置这些东西也都可以调试的,

但是这几天死活调不上,结果把上面这两东西设置了就可以调试了,估计是因为 VirtualDDK 需要 UDP 来进行调试,

所以,防火墙还是禁用比较好,但是我一直都不明白这个调试和开不开远程有何关系,感觉着不是扯淡嘛)

2011-07-31_142516

2011-07-31_142722

同样在你的虚拟机操作系统上,我这里安装的是 XP ,

也一样需要开启远程并且关闭防火墙,理由同上,看你人品了。

2011-07-31_142557

2011-07-31_142640

                         

                      

检测是否设置成功:

           

设置好上面这些东西后,我们需要来检测一下,这个检测是必要的,

因为如果你检测没有通过的话,在后面是绝对不可能成功的利用 VS2010 + VirtualDDK 来调试驱动程序的

1. 在主机里面 Ping 虚拟机上的 XP 操作系统(必须成功)。

2. 在虚拟机里面的 XP 操作系统中 Ping 本地主机(必须成功)。

3. 在虚拟机里面的 XP 操作系统中通过网上邻居访问本地主机(必须成功)。

2011-07-31_142947

image

                      

                               

下载和安装 VirtualDDK:

           

安装好 VirtualDDK 后(一般安装在 C:\Program Files\VisualDDK 目录下),

可以在该目录下看到一个 Target 文件夹,

将这个 Target 文件夹拷贝到虚拟机上的 XP 操作系统下,并且运行 Target 文件夹下的 vminstall.exe,

然后将虚拟机中的 XP 操作系统重新启动(安装完 vminstall.exe 后会提示需要重启系统)。  

                          

                     

VS2010 创建 VirtualDDK 项目:

           

打开 VS2010 ,创建 VirtualDDK 项目,创建过程如下截图:

2011-07-31_013137

2011-07-31_013316

创建好 VirtualDDK 项目后,您可以尝试着生成以下解决方案,可以看到很容易的生成了解决方案,

也会在指定的目录下生成 .sys 文件和 .pdb 文件。

                            

                 

调试驱动程序:

           

开始调试驱动程序:

首先是启动虚拟机中的 XP 操作系统,等到 XP 操作系统出现以下界面时(你可以通过上下键来使得 30 秒倒计时停止),

2011-07-31_143104

到 VS2010 中,完成以下操作:

2011-07-31_143555

2011-07-31_143137

2011-07-31_143617

当出现下面的错误提示时,直接确定忽略,然后重新 Start Debug 即可

2011-07-31_143648

然后再加载我们自己写的这个驱动程序即可,这样就会出现调试界面了,

2011-07-31_144059

在虚拟机中也会显示一些消息:

2011-07-31_144117

                         

                 

在 VBox 下调试驱动程序:

                          

在 VBox 下调试驱动程序其实和在 VMware 下调试是差不多的,也就是具体的操作和上面的操作基本上是一样的,

但是需要改变一点点东西,

首先定位到 VBox 的安装目录(C:\Program Files\Oracle\VirtualBox),

可以在该目录下看到一个 VBoxDD.dll,我们需要将这个文件的名字改为 VBoxDD0.dll,

image

改名后,我们再定位到 VirtualDDK 的安装目录下(C:\Program Files\VisualDDK\VirtualBox\x86),

并且将该目录下的 VBoxDD.dll 拷贝到上面的这个目录(C:\Program Files\Oracle\VirtualBox)下。

image

至于其他的步骤的话,就和前面在 VMware 下的操作是一样的了。

                

                    

版权所有,迎转载,但转载请注明: 转载自 Zachary.XiaoZhen - 梦想的天空

                    

                          

posted @ 2011-07-31 15:51 小宝马的爸爸 阅读(...) 评论(...) 编辑 收藏