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

[经验分享] VS2010+VMWare8+VisualDDK1.5.6 创建并调试你的第一个驱动程序

[复制链接]

尚未签到

发表于 2015-10-8 13:47:20 | 显示全部楼层 |阅读模式
本文描述了如何使用Visual Studio+VMMare+VisualDDK来创建、编译和调试你的第一个驱动程序。本文提供在开发和调试工具的环境下详细的操作步骤,而无需太多的关心这些环境背后所做的事情。如果你想学习更多驱动程序开发的API,可以参考 OnlineWDK help
本教程我们会创建以下驱动测序并且在虚拟机上测试它:

  • 一个超级简单的驱动,加载时打印一条信息
如果你有另外一台实体机,你就不用安装虚拟机了。不过,你可能需要COM连接或者一个火线连接两台机子。
必备软件
开始写驱动之前,你需要准备一些软件(点击超链接直接下载)。

  • VMWare,虚拟机软件,用于运行用于调试的虚拟机。
  • Windows安装镜像,用来给虚拟机装系统。建议使用XP或Windows7(如果你内存大一点,建议Windows7)。要是没有你可以找人拷或者到msdn.itellyou.cn下载
  • Visual Studio 2010,用来写代码
  • Windows Driver Kit (WDK) 7.1.0,用于Windows驱动开发的工具包
  • VisualDDK,将WDK和VS结合配置好的一个可视化VS插件
如果你不知道ISO镜像怎么使用,下载一个UltraISO然后去找下相关用法。
准备工作

  • 第一步是安装虚拟机软件。这个过程很简单,只需要按照步骤一步一步来。
  • 然后是创建一个虚拟机,以VMWare Workstation 8为例。

    • 点击File-New Virtual Machine
    • 选择Custom(advanced) DSC0000.jpg
    • 硬件兼容性无所谓,如果你用最新的VMWare,选择Workstation 8.0
    • 选择操作系统:这里选择你的操作系统镜像
      DSC0001.jpg
    • 然后填写虚拟机操作系统的个人资料(Windows7的话密钥可以不填)
    • 然后是设置CPU和内存,默认的就可以。
    • 选择网络设置,Bridge或者NAT都可以
      DSC0002.jpg
    • IO设置默认,磁盘创建新的磁盘文件
      DSC0003.jpg DSC0004.jpg DSC0005.jpg DSC0006.jpg DSC0007.jpg
    • 最后点一下Finish,会自动安装操作系统,等其装好(太扯淡装Win7用了10分钟)。
      DSC0008.jpg

  • 在虚拟机上安装支持软件并创建快照。

    • 如果使用自动安装系统的方式,系统安装好后,会自动安装支持工具
    • 手动安装的方式是点击菜单VM-Install VMware Tools,安装一步步跟着向导就行了。
      DSC0009.jpg
    • 给干净的系统创建一个快照。点击菜单VM-Snapshot-Take Snapshot,快照名字叫干净系统之类的。然后点Take Snapshot
      DSC00010.jpg
      DSC00011.jpg

  • 安装Visual Studio 2010,装过了就跳过。不过要注意的是,你的VS要至少包括C++和C#两个模块,如果不全,请重新安装。
  • 安装VAX(可选)。VAX只是要来方便你写C++代码的。

    • 启动Visual Studio,选择菜单工具-拓展管理器
      DSC00012.jpg
    • 在"联机库"搜索"Visual Assist X",点击下载
      DSC00013.jpg
    • 下载完成后安装,下次启动VS就有效了。

  • 安装Windows Driver Kit(WDK)。

    • 用UltraISO加载WDK的镜像。(下文H: 表示虚拟光驱的盘符)
      DSC00014.jpg
    • 选择要安装的功能,建议配置如下:
      DSC00015.jpg
    • 安装目录就选择默认目录,改了的话你自己记住在哪儿。
    • 然后就开始安装了 DSC00016.jpg

  • 安装32位的Windows调试工具(DDK)。

    • 在WDK的ISO目录底下找到H:\Debuggers\setup_x86.exe开始安装。完全安装即可。(Visual Studio是一个32位的软件,所以不能使用64位的调试工具)。 DSC00017.jpg

  • 安装和配置VisualDDK

    • 双击"VisualDDK-1.5.6.exe"开始安装DDK
    • 装完(很快)之后,会出现一个配置向导。如果你按照上面的步骤安装,那么WDK位置和DDK位置会自动识别,直接点下一步。
      DSC00018.jpg
    • 然后会让你选择VS的版本,如果你已经装有VS,它也会自动识别。
      DSC00019.jpg
    • 点Finish开始进行物理机的配置(可能会自动启动VS,不要动它,会自动关闭)。
      DSC00020.jpg

  • 配置虚拟机

    • 网络配置。依次选择菜单VM-Settings,打开配置页。选择Network Adapter,将配置改为Bridge或者NAT。 DSC00021.jpg DSC00022.jpg
      然后测试你的网络连接,主机ping虚拟机,虚拟机ping主机应该能互通。
    • 复制 C:\Program Files (x86)\VisualDDK\target\vminstall.exe 到虚拟机上运行(如果正确安装了VMTools,可以直接复制粘贴的,如果不行,重新安装VMTools或使用VMWare 的网络功能拷贝该文件)。 DSC00023.jpg
    • 点击安装,提示重启(虚拟机),点是就可以了。重启后,关闭虚拟机(没错,关掉它)。

使用向导创建驱动

  • 以管理员权限运行Visual Studio(右击-以管理员权限运行) DSC00024.jpg
  • 点击文件-新建-项目,打开新建项目向导,选择C++下的VisualDDK, DSC00025.jpg
    注意:项目位置不可以包含空格,不可以包含中文,否则你会很悲剧(无法生成解决方案)
  • 选择一个Pnp的驱动,其他配置默认
DSC00026.jpg

  • 现在打开你的源代码,看到的应该是以下效果 DSC00027.jpg
  • 生成解决方案。选择菜单生成-生成解决方案。 DSC00028.jpg
    如果没有错误,证明生成成功了。生成成功后,你可以右击项目,点击"在Windows资源管理器中打开文件夹",进入生成目录(如objchk_win7_x86\i386)可以看到成功生成的sys驱动文件。
    DSC00029.jpg DSC00030.jpg
  • 如果不需要调试,运行该sys文件就可以使用驱动了(安装方式你得自己研究)。下面介绍调试的方法(调试会自动帮你安装驱动程序)。
调试你的驱动

  • 运行VisualDDK安装目录下的vmmon.exe或vmmon64.exe(如果你是64位系统)。当然,你也可以在开始菜单处搜索到这两个程序。 DSC00031.jpg
    DSC00032.jpg
  • 这时候启动虚拟机,不要进入系统,停在操作系统选择菜单上!此时你的VMMonitor和虚拟机画面应该是这样的: DSC00033.jpg
    DSC00034.jpg
    注意,这步至关重要,如果你看到的PID字段上那个图标不是绿色的,或者说Pipe name没有建立出来,将不能进行内核调试。这个步骤我搞了n久找到了解决方案。如果你有这样的问题,你可以这么做:


  • 进入目录"%USERPROFILE%\AppData\Roaming\VirtualKD" DSC00035.jpg
  • 将里面的*.vmpatch文件删除 DSC00036.jpg
  • 重试上面的步骤

  • VS中选择菜单调试-Driver Launch Settings… DSC00037.jpg


  • 首次调试,会提示你配置Visual DDK(这个操作你也可以通过菜单工具-VisualDDK Settings…进行) DSC00038.jpg
    选择好你的调试工具的目录(如上,需要32位的调试工具)和符号目录(调试符号,到时候会自动下载到该目录)
  • 设置好VisualDDK后,应该会弹出调试设置对话框 DSC00039.jpg
    选择Virtual Machine的调试方式,此时,应该可以选择已经加载管道的虚拟机了。其他使用默认配置(如果你手动指定了虚拟机的IP,最好再这里填写),配置好之后,点Launch。

  • 点击Launch之后,你应该可以看到一个连接对话框,这个时候点Detail可以看到以下信息。它在等待虚拟机启动。 DSC00040.jpg
  • 这个时候启动虚拟机(选择VirtualKD调试),启动的时候会为你加载符号。首次加载符号会从符号服务器下载,请耐心等候。 DSC00041.jpg
    如果有不能加载的符号,VisualDDK会弹出提醒(服务器上没有),问你下次是否跳过这些符号,点OK就行了。
    DSC00042.jpg
  • 如果虚拟机版本是Vista以上,会跳出一个对话框,问你是否要打印调试信息,选是。 DSC00043.jpg
  • 然后,VS此时会进入一个中断。点击调试-继续让内核和驱动继续加载 DSC00044.jpg
  • 启动的过程可能相当缓慢,而且VisualDDK的控制台会输出一些错误信息,这是正常的,请耐心等候 DSC00045.jpg
    DSC00046.jpg
  • 如果你的虚拟机成功启动,恭喜你,你基本已经成功了!成功启动后,启动虚拟机上的DDKLaunchMonitor(默认在C盘根目录)。启动后,可以看到虚拟机的IP是192.168.3.105 DSC00047.jpg
  • 现在点击VisualDDK控制台上的加载驱动的命令(如果控制台不见了,可以选择菜单调试-窗口-VisualDDK Console调出来) DSC00048.jpg
    点击之后,可以看到以下对话框。因为刚才填写调试配置的时候没有填写IP,现在需要重新填写才能跟虚拟机通信。
    DSC00049.jpg
    点击菜单调试-停止调试,重新选择菜单调试-Driver Launch Settings… ,将虚拟机的IP填上。

    这次再点击Launch,你能成功连接了。

  • 现在弹出了一个驱动安装的配置向导,使用默认设置,然后点击"Install"
  • 此时看虚拟机,会弹出让你安装驱动程序的对话框,选择"始终安装此驱动程序"
  • 当驱动安装成功,你可以看到,输出的调试信息"Hello from PnpDriver",输出的语句你可以在你的源代码的DriverEntry函数中找到。
  • 要结束调试,记住点击"调试"-"结束调试"。
  • 下次继续调试,不用重启虚拟机,可以直接使用建立好的管道。下面敲个断点试试。
  • 调试情况:
问题收集

  • 调试菜单下没有VisualDDK的相关菜单项。此时你可以试试打开我的文档,把Visual Studio 2010目录底下的Addins文件夹删掉再重装VisualDDK。如果还不行,你可以试试把整个Visual Studio 2010目录删掉(注意备份你以前的工程)
  • 没法连接到我的VMWare虚拟机正确的步骤是,在VMWare启动时,将界面停留在os 选择这里,然后点击Driver Launch Settings,设置好,然后点击Launch,然后在VMWare里进入系统。经过这样的步骤后,虚拟机系统里的驱动,才可以被正常的调试。
    如果你在VMMon看到的"指示图标"不是绿色的,你需要删除%USERPROFILE%\AppData\Roaming\VirtualKD下的*.vmpatch文件
  • 其他问题,加我QQ:techird@qq.com
  • 本文参考地址:


  • http://articles.sysprogs.org/visualddk/firstdriver/ (Making your first driver - complete walkthrough)
  • http://debugman.com/thread/5729/1/1 (VS 2010 + Visualddk + VMWare调试驱动要点)
  • http://forum.sysprogs.org/viewtopic.php?f=4&t=587 (VS工程目录包含空格不能生成的问题)

运维网声明 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-124368-1-1.html 上篇帖子: linux 中安装VMware Tools(菜鸟的总结) 下篇帖子: 安装vmware tools后/mnt/hgfs下看不到共享文件夹的解决办法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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