VS2012 + WDK8.0 + Win8调试内核驱动程序(一) .

来源:互联网 发布:生意参谋数据导出工具 编辑:程序博客网 时间:2024/06/02 01:40

Windows操作系统内核驱动程序的调试一直都显得比较复杂,官方没有集成调试环境,只能使用WinDbg这些调试工具,且需要进行繁琐的设置。也有大牛开发VisualDDK这样的工具,很大程度上方便了大家的驱动开发。驱动新手一般都得在网上搜索+动手实验(实际上中文网站的驱动程序资料屈指可数),花个十天半个月先学会搭建开发调试环境,无形中造成了入门的高门槛。

Visual Studio 2012的发布终于使得这种情况有所改变,WDK8.0被VS2012所集成。虽然还是要单独安装这两个东西(先装VS2012,再装WDK8.0),但是安装后VS2012就集驱动程序开发,编译,安装,部署和调试于一身,Windows驱动程序开发会变得更容易。

工欲善其事,必先利其器。在开始实际编写代码之前,照例还是要先搭建整个开发调试环境。下面介绍一下安装配置过程。

1)工具准备

Visual Studio 2012旗舰版

WDK 8.0

Windows 8 64位符号表

2)搭建调试环境

首先要说明一下操作系统的选择。WDK8.0提供了使用网线的调试方法,但是要求被调试机(Test)是Win8,而调试机(Host)则不必是Win8。如果是其它调试方式(串口,1394或者USB)就没有这个限制。我的操作系统是这样的:

调试机:Win7 64位专业版

被调试机:Win8 64位专业版

其次说明一下网络配置,需要将调试机和调试机连接到同一个局域网(同一个子网更好),并且在同一个域下面。我使用的PC加入了公司的局域网,于是使用的是公司的域,而调试机却是使用默认的”WORKGROUP“域,一开始没有发现问题,能ping通,能远程登陆,能传输文件,VS设置的时候也没出什么问题,但是就是调试不了。一直重复操作流程就不说了,后来怀疑是VS的问题,就重装了VS和WDK,之后又怀疑是操作系统的问题,就从Win7换到Win8。最后是新装了一台Win8,域也是”WORKGROUP“的才解决了问题。

在调试机上,先安装Visual Studio 2012,再安装WDK8.0(顺序不能改),被调试机上不能安装VS,也不能安装WDK,不然不能调试!安装完成后,启动VS,在新建项目那里就可以看到很多驱动程序模板,如下所示:

我们选择一个Kernel Mode Driver(KMDF)模板,填上项目名称,选择存放目录,点击OK就可以创建一个内核模式驱动程序了。最好勾上Create directory for solution,因为创建完会生成两个项目,一个是驱动程序代码,一个是生成的驱动程序包,放在一起比较好。两个项目都会出现在Solution面板中,如下图所示

与写应用程序一样,先选择目标系统平台类型,我选的是Win8 Debug x64。之后需要做一些调试准备,可以在“KMDF1 Driver Package”这个项目上右键,依次点击选择“Properties” --> "Configuration Properties" --> "Driver Install" --> "Deployment",出现以下界面:

勾选“Enable deployment”和“remove provious driver versions before deployment”,如果是真实设备,勾选“Install and Verify”,否则勾选“Hardware driver ID update”,并填入硬件ID(该ID可以在KMDF Driver1项目下面的KMDFDriver1.inf文件中找到,一般为Root\xxxx的形式)。之后点击“Target Computer Name”下面的下拉列表框,选择“<Configura Computer...>”,弹出下面的界面(注意:菜单栏的“Dirver” --> "Test" --> "Configura Computers..."可以打开相同的界面):

 

首次添加远程计算机就点击“Add New Computer”,弹出远程计算机配置界面。如果已配置过的,选中后直接Next就行。最上面需要填入远程计算机名称(不是IP地址,也不是用户名,是计算机名),然后选择“Prevision Computer and Automatically Configura Debuggers”,之后一路Next,过程中,VS会在远程计算机上安装调试工具,设置调试环境,会重启几次。

如果选择的是第二项“Provision Computer and choose debugger setting”,就可以自己选择调试方式(网络,串口,1394,USB)。即使不是使用网络进行调试,也要使用网线连接调试机和被调试机,因为VS在配置环境的时候需要使用网络进行配置和传输文件。如下图:

最后讲一下符号表的问题。大家都知道,符号表对驱动程序开发是非常重要的,可以在这个地方http://msdn.microsoft.com/en-us/windows/hardware/gg463028.aspx下载目标系统对应的符号表,并在VS中包含它。

下次讲一下具体的编码调试过程.

 

0 0
原创粉丝点击