设为首页 收藏本站
查看: 1488|回复: 0

[经验分享] 驱动程序环境搭配(VS2010 + WDK + VirtualDDK + VMware)

[复制链接]

尚未签到

发表于 2015-4-4 19:22:05 | 显示全部楼层 |阅读模式
  以前一直都是用 VS2008 + DDKWizard + WinDbg 来进行驱动程序的开发调试的,
  使用 DDKWizard 来搭配调试环境呢,在 VS2008 下也还算方便,
  因为不需要自己去设置一些什么包含文件啊,源代码路径啊之类的就可以直接编译驱动程序源码,
  安装好 DDKWizard 后,在 VS2008 中就会自动出现一个开发驱动程序的项目框架,
  就跟选择创建 WinForm 应用程序一样的,创建好 DDK 项目后也是可以直接在 VS2008 下编译的,
  所以在开发上也还方便,但是在调试上的话,就麻烦了,
  在 WinDbg 中有一大堆东西要设置,在虚拟机上也要设置一些命令,
  关于 WinDbg + VMware 开发调试驱动程序在网上有比较有名的酒若琳的文章,
  不过那是很多年以前的文章了,有兴趣的可以去谷歌搜索 "酒若琳 WinDbg" ,应该是可以找到那篇文章的。
  同时对于这一块的使用,也可以参考笔者的文章《驱动开发 – WDK 调试及 SVN 环境搭配》,
  博文地址为:http://www.iyunv.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 地址,
  同时需要修改一块虚拟网卡的共享属性。
DSC0000.gif
DSC0001.gif
DSC0002.gif
   DSC0003.gif
  在虚拟机中安装好 Windows 操作系统并且设置网卡类型为 NAT 类型
DSC0004.png
  将本地主机开启远程,并且将本地主机的防火墙全部关掉
  (这一步,看你运气了,有时候不设置这些东西,在 VS2010 下也是可以利用 VirtualDDK 调试驱动程序成功的,
  但是你人品不好的时候就难说了,就比如我自己,前些日子不设置这些东西也都可以调试的,
  但是这几天死活调不上,结果把上面这两东西设置了就可以调试了,估计是因为 VirtualDDK 需要 UDP 来进行调试,
  所以,防火墙还是禁用比较好,但是我一直都不明白这个调试和开不开远程有何关系,感觉着不是扯淡嘛)
DSC0005.gif
   DSC0006.gif
  同样在你的虚拟机操作系统上,我这里安装的是 XP ,
  也一样需要开启远程并且关闭防火墙,理由同上,看你人品了。
   DSC0007.gif
   DSC0008.gif
                            
                         
  检测是否设置成功:
              
  设置好上面这些东西后,我们需要来检测一下,这个检测是必要的,
  因为如果你检测没有通过的话,在后面是绝对不可能成功的利用 VS2010 + VirtualDDK 来调试驱动程序的
  1. 在主机里面 Ping 虚拟机上的 XP 操作系统(必须成功)。
  2. 在虚拟机里面的 XP 操作系统中 Ping 本地主机(必须成功)。
  3. 在虚拟机里面的 XP 操作系统中通过网上邻居访问本地主机(必须成功)。
DSC0009.gif
DSC00010.png
                         
                                  
  下载和安装 VirtualDDK:
              
  安装好 VirtualDDK 后(一般安装在 C:\Program Files\VisualDDK 目录下),
  可以在该目录下看到一个 Target 文件夹,
  将这个 Target 文件夹拷贝到虚拟机上的 XP 操作系统下,并且运行 Target 文件夹下的 vminstall.exe,
  然后将虚拟机中的 XP 操作系统重新启动(安装完 vminstall.exe 后会提示需要重启系统)。   
                             
                       
  VS2010 创建 VirtualDDK 项目:
              
  打开 VS2010 ,创建 VirtualDDK 项目,创建过程如下截图:
DSC00011.gif
   DSC00012.gif
  创建好 VirtualDDK 项目后,您可以尝试着生成以下解决方案,可以看到很容易的生成了解决方案,
  也会在指定的目录下生成 .sys 文件和 .pdb 文件。
                               
                    
  调试驱动程序:
              
  开始调试驱动程序:
  首先是启动虚拟机中的 XP 操作系统,等到 XP 操作系统出现以下界面时(你可以通过上下键来使得 30 秒倒计时停止),
   DSC00013.gif
  到 VS2010 中,完成以下操作:
   DSC00014.gif
DSC00015.gif
   DSC00016.gif
  当出现下面的错误提示时,直接确定忽略,然后重新 Start Debug 即可
   DSC00017.gif
  然后再加载我们自己写的这个驱动程序即可,这样就会出现调试界面了,
DSC00018.gif
  在虚拟机中也会显示一些消息:
   DSC00019.gif
                            
                    
  在 VBox 下调试驱动程序:
  
  在 VBox 下调试驱动程序其实和在 VMware 下调试是差不多的,也就是具体的操作和上面的操作基本上是一样的,
  但是需要改变一点点东西,
  首先定位到 VBox 的安装目录(C:\Program Files\Oracle\VirtualBox),
  可以在该目录下看到一个 VBoxDD.dll,我们需要将这个文件的名字改为 VBoxDD0.dll,
DSC00020.png
  改名后,我们再定位到 VirtualDDK 的安装目录下(C:\Program Files\VisualDDK\VirtualBox\x86),
  并且将该目录下的 VBoxDD.dll 拷贝到上面的这个目录(C:\Program Files\Oracle\VirtualBox)下。
DSC00021.png
  至于其他的步骤的话,就和前面在 VMware 下的操作是一样的了。
                   
                       
  版权所有,迎转载,但转载请注明: 转载自 Zachary.XiaoZhen - 梦想的天空
                       
                             

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-53863-1-1.html 上篇帖子: VMware Vcenter Converter Standalone P2V时报错“用户凭据错误,因此” 下篇帖子: Mac入门 (二) 使用VMware Fusion虚拟机
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表