一、先介绍一下被调试的虚拟机系统环境:
虚拟机:vmware workstation 10.0版本
虚拟机操作系统: Microsoft windows xp professional 2002 service pack3
cpu:2.8GHz,2.64GB内存
二、这个没有直接关系。做个笔记而已。
1.在XP系统中,创建了一个first.c文件
测试代码如下:
#include
void DriverUnload(PDRIVER_OBJECT driver)
{
DbgPrint("first:Our driver is unloading....\r\n");
}
NTSTATUS DriverEntry(PDRIVER_OBJECT driver, PUNICODE_STRING reg_path)
{
DbgPrint("first:Hello,my salary!");
driver->DriverUnload = DriverUnload;
return STATUS_SUCCESS;
}
2.添加无后缀makefile文件
内容如下:
!IF 0
Copyright (C) Microsoft Corporation, 1999-2002
Module Name:
makefile.
Notes:
DO NOT EDIT THIS FILE!!! Edit ./sources. if you want to add a new source
file to this component. This file merely indirects to the real make file
that is shared by all the components of Windows NT (DDK)
!ENDIF
!INCLUDE $(NTMAKEENV)\MAKEFILE.DEF
3.添加一个SOURCES无后缀文件
内容如下:
TARGETNAME=first
TARGETTYPE=DRIVER
SOURCES=first.c
4.windows driver kits---WDK 6001.18001--Build Environments--windows xp---Launch Windows XP x86 Checked Build Environment
5.在控制台窗口输入build命令,生成sys文件。
6.使用SRVINSTW.EXE安装first.sys驱动。(选项为设备驱动)
=============================================================================================
三、开始设置被 调试机(虚拟机和xp系统的设置)
设置中添加一个串行端口:使用命名管道。
设置参数如下:
使用命名的管道:
参数1:\\.\pipe\com_1
参数2:该端是客户端
参数3: 另一端是应用程序
如图:
在虚拟机XP系统中,把隐藏的boot.ini文件调出来,
修改如下:
[boot loader]
timeout=20
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect /debug/debugport=com1 /baudrate=115200
其实就是添加最后一行的内容.再重启系统时,就会出现调试选项
虚拟机的设置到此完成.
接下来是调试机(物理机系统):
window 10 专业版 64位
windbg 安装后,复制了一个快捷图标到桌面了。在属性目标中设置了参数:
"D:\Program Files\Debugging Tools for Windows (x64)\windbg.exe" -b -k com:port=\\.\pipe\com_1,baud=115200,pipe
这样就不需要每次去控制台输入命令这么麻烦的操作。
出现了这个很蛋疼的错误。
百度了快半天。能找到的就几个回答。。看了更蛋疼。。
意思就是,可能是已经有其它的com_1管道在。创建的不仅仅是一个com_1.
但是我就这个xp系统有添加串口管道。其它都没有。。
我又重新的开始从头到尾的操作一遍。。windbg也下载了好几个。。都是这么个提示。。
终于在有一次设置管道串口参数的时候。。我忘记了把:该端是服务器 选择。因为它默认就是,该端是服务器。。我直接设置第三个参数了。然后确定。。
选择调试。。
接着运行windbg。。
终于成功了。。。。
这是血与泪的教训。。。
呃。。一直黑屏了。。在kd输入g
继续运行。。
最后总结一下,问题其实就出现在参数设置的时候,"该端是服务器"和"该端是客户端"
<>一书中写到。。请读者随机应变。。随机应变。。。