第一个驱动程序环境配置,编写与调试(2)

接上一次开始,仿照书上写了一个简单的不包含任何设备的驱动程序,差不多如下
#include <ntddk.h>
#define  __DEBUG__
VOID DriverUnload( PDRIVER_OBJECT  driver)
{
DbgPrint("Dirver Unloading...");
}
NTSTATUS  DriverEntry( PDRIVER_OBJECT  DriverObject, PUNICODE_STRING  RegistryPath
{
#ifdef  __DEBUG__
_asm int 3
#endif
UNICODE_STRING  wStrEntry ;
RtlInitUnicodeString(& wStrEntry,L"Dirver Entry.\n");
UNICODE_STRING   wStrHello =  RTL_CONSTANT_STRING(L"First Driver Loaded!\n");
DbgPrint("%wZ",& wStrEntry);
DbgPrint("%wZ",& wStrHello);
DriverObject-> DriverUnload =  DriverUnload;
return  STATUS_SUCCESS
}
扔进VS2010 编译一份,用控制台编译一份,扔进虚拟机调试
使用了工具DriverMonitor 与DbgView .
安装驱动,加载,DbgView查看DbgPrint的输出,停止驱动卸载,一切很顺利
后来使用Windbg 联机VMWare 双调的时候出现了问题 
按照网上的设置WinDbg始终连接不上 VMWare里面的WinXP 不会被中断掉
后经过无数次尝试发现原来是com端口的问题,在我的虚拟机内没有Com1 而网络教程前篇一律的com1
导致无数次尝试失败后,才发现问题.
具体WinXP虚拟机设置如下:
1.右键虚拟机中系统的WinXP,属性-硬件-设备管理器 找到-COM端口 查看一下有哪些COM端口
2.选择一个端口,由于我没有COM1我选择的COM2.将-端口设置-位/秒 改为115200
3.在虚拟机系统中的根目录下boot.ini中写入一句话
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional Debug" /noexecute=optin /fastdetect /debug /debugport=com2 /baudrate=115200
由于我的端口为COM2所以debugport 这里填com2
4.退出虚拟机,打开虚拟机设置,添加串行端口 如下设置
第一个驱动程序环境配置,编写与调试(2) - Vanilia - Vanilia
5.设置WinDbg,我使用的方法是,创建一个快捷方式 右键WinDbg的快捷方式,目标
在双引号后面添加-b -k com:pipe,port=\\.\pipe\com_2,baud=115200,resets=0
6.设置符号表,网上有各种教程,我下载了符号表 安装好后导入WinDbg 的 Symbols Path就好了
7.打开虚拟机,会出现调试模式 ,先不急选择进入
第一个驱动程序环境配置,编写与调试(2) - Vanilia - Vanilia
  8.打开WinDbg快捷方式
第一个驱动程序环境配置,编写与调试(2) - Vanilia - Vanilia
 
9.进入虚拟机,选择调试模式 进入
  第一个驱动程序环境配置,编写与调试(2) - Vanilia - Vanilia
  10.成功后会中断下来 ,在控制台输入g,继续执行
11.搞定WinDbg 与VM联调后,调试简单的驱动程序就很简单了,尤其是本身就没几句话的程序

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值