第一个驱动程序环境配置,编写与调试(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联调后,调试简单的驱动程序就很简单了,尤其是本身就没几句话的程序
#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联调后,调试简单的驱动程序就很简单了,尤其是本身就没几句话的程序
相关文章推荐
- 第一个驱动程序环境配置,编写与调试(1)
- VC6.0配置汇编环境并编写第一个Hello World程序
- 越狱开发:用iosOpenDev配置越狱开发环境 编写第一个hello world
- 【安装eclipse, 配置java环境教程】 编写第一个java程序
- 【安装eclipse, 配置java环境教程】 编写第一个java程序
- Windows8.1驱动编写以及内核调试(一) 做好准备工作并编写第一个驱动程序
- Java入门-第一节-jdk的安装,环境变量的配置及第一个程序的编写。
- Android驱动程序开发和调试环境配置
- 汇编环境配置以及代码编写调试
- Android驱动程序开发和调试环境配置 推荐
- 【转帖】VMWare和WinDbg调试驱动程序环境配置
- 用windbg和VMware虚拟机调试驱动程序环境配置
- PHP开发环境搭建 (XAMPP+Xdebug+netbeans,配置调试),创建第一个php项目
- 配置java开发环境及使用记事本编写第一个最简单的java程序
- 越狱开发:用iosOpenDev配置越狱开发环境 编写第一个hello world-b
- 【安装eclipse, 配置java环境教程】 编写第一个java程序
- 【安装eclipse, 配置java环境教程】 编写第一个java程序
- C++网络开发包ACE环境的配置与调试
- 配置WINDOWS驱动程序的开发环境-走出第一步
- jsp实验1:配置JSP环境与编写测试程序