您的位置:首页 > 其它

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

2012-07-22 21:55 288 查看
接上一次开始,仿照书上写了一个简单的不包含任何设备的驱动程序,差不多如下
#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.退出虚拟机,打开虚拟机设置,添加串行端口 如下设置



5.设置WinDbg,我使用的方法是,创建一个快捷方式 右键WinDbg的快捷方式,目标
在双引号后面添加-b -k com:pipe,port=\\.\pipe\com_2,baud=115200,resets=0
6.设置符号表,网上有各种教程,我下载了符号表 安装好后导入WinDbg 的 Symbols Path就好了
7.打开虚拟机,会出现调试模式 ,先不急选择进入



 
8.打开WinDbg快捷方式



 
9.进入虚拟机,选择调试模式 进入
 



 
10.成功后会中断下来 ,在控制台输入g,继续执行
11.搞定WinDbg 与VM联调后,调试简单的驱动程序就很简单了,尤其是本身就没几句话的程序
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息