菜鸟WDF驱动开发系列(3):安装与调试第一个UMDF驱动程序

写了篇2时,我绞尽脑汁想在虚拟机上实现UMDF的远程调试,但没办法,据我能找到的书来看,只有一个方法就是,在WinDBG--File--Attach to a process,哦嘀神啊,在本机怎么Attach目标机器的进程?于是我就崩溃到装了WDK8与VS2012 RC,本以为可以在VS2012里的驱动集成开发模块里找到方法,结果还是没能找到在本机Attach的虚拟机中的进程的办法,于是,我暂时放弃了上述想法。既然世界的资料都只讲在本机上调试UMDF驱动,为省时间考虑,我只能这样,因为我主机装系统是Win7x64的,所以,我只好重新Build了一个适用于64位系统的UMDF驱动(至于怎么Build我还是略懂的)上传了上来,作为本教程的案例。请到以下地址下载:http://down.51cto.com/data/461132

(1)UMDF驱动程序的安装

Win7特别是64位系统对于驱动的安装限制得很要命,这对于消费者来说算很明智的选择,但对于像我们这些老有折腾电脑的人而言那无疑是种折磨。在Win7下面安装一些莫名其妙的驱动,不像xp下那么简单明了。请将上面提到的案例下载下来,解压出来是一个叫UMDFSampe的文件夹,里面已经包含build好的符号文件、驱动动态链接库文件、源代码等,随便放到D盘就好了。

打开电脑的设备管理器,在树形列表的顶层本机图标上,右键,选择“添加过时硬件”,接下来说是找inf文件来安装,我就不赘述了。对啦,虽然是你新写的驱动,但也算是过时硬件的,这就先别介意了,WDK起码有四五种方法帮你很专业的安装驱动的,以后慢慢学吧,现在我也不懂。

最后安装好在设备管理器里就会有一个打着“?”号的图标的设备,这就是我们刚刚装好的UMDFSample驱动,如果安装的过程中提示“驱动没有签名”,你选择确定继续安装就好了,如果你知道驱动签名需要多少RMB你就不会犹豫点确定了。

菜鸟WDF驱动开发系列(3):安装与调试第一个UMDF驱动程序_第1张图片

2)修改注册表

在研究了许久之后,我才发现UMDF驱动原来是挂在系统里WUDFHost.exe的进程里的,事实上我们调试时要Attach这个线程。KMDF与UMDF的调试最大的不同是,前者会死机,后者不会死机,为实现UMDF的断点,必须对驱动的响应时间做些修改,打开注册表:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WUDF\Services\{193a1820-d9ac-4997-8c55-be817523f6aa},修改如下图:

菜鸟WDF驱动开发系列(3):安装与调试第一个UMDF驱动程序_第2张图片

主要是对HostProcessDbgBreakOnDriverLoad与HostProcessDbgBreakOnStart两个值作修改,其实值表示的是延时,其实看这两个变量名可以大概猜出它们的用途,我就不乱猜了,诸位可以上MSDN上看。大概前两都设大于0估计就可以了。记得不用调试请改回原始值,不改的后果是什么我真不清楚。

(3)WinDBG的设置

WinDBG的设置只有简单的符号路径与源文件路径,这个在篇2就已经提过了,因为我的系统是64位系统,所以我选的是WinDBG for amd64,所以就别用篇1提到的快捷方式了。

只需将Symbol Search Path设成:D:\UMDFSample\sys\objchk_win7_amd64\amd64;

将Source Search Path设成:D:\UMDFSample\sys;

注意驱动解压文件的路径,然后打开WinDBG的File--Attach to Process,如下图所示:

菜鸟WDF驱动开发系列(3):安装与调试第一个UMDF驱动程序_第3张图片

某些情况下会显示多个WUDFHost.exe进程,像你插入MP3什么的,主注意事先去掉无谓的设备,好像还有其他方法精确定位的,我现在还不清楚。

选择好WUDFHost.exe后,点击“OK”,如下图所示:

菜鸟WDF驱动开发系列(3):安装与调试第一个UMDF驱动程序_第4张图片

图(4)

(4)设置源文件断点及实施中断操作

好了,现在可以打开你要设置断点的源文件了,File--Open Source File,打开Queue.cpp文件,随便找个地方按下F9设置断点,断点是以鲜红色呈现的,如下图所示:

菜鸟WDF驱动开发系列(3):安装与调试第一个UMDF驱动程序_第5张图片

接下来,将篇2里我提到的CahrSampleWin.exe测试程序打开,“开启驱动UMDF”,然后再按“随机转换UMDF”,断点外就会显示鲜紫色显示,表示已经在此成功断点,如下图所示:

菜鸟WDF驱动开发系列(3):安装与调试第一个UMDF驱动程序_第6张图片

 

好啦,(如果觉得不会动,写输入“g”命令,让驱动开跑,因为你有可能在其他地方乱设断点了)成功断点后,怎么查看变量那就是其他篇章的事了,至此为止,其他再讨论吧。

本文出自 “几缕萧雨锁清秋” 博客,请务必保留此出处http://joeyliu.blog.51cto.com/3647812/943368

 

你可能感兴趣的:(驱动开发)