一,hello 驱动!

一,工具准备

 

1,WinDBG

2,DbgView

3,WDK

4,驱动加载工具

5,虚拟机软件

6,下载symbols 微软官网搜(symbols)

 

二,虚拟机环境配置

1,安装XP操作系统

2,为虚拟机添加串口  //./pipe/com_1

3,配置boot.ini文件,最后行加入以下代码:

multi(0)disk(0)rdisk(0)partition(1)/WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect /debug /debugport=com1 /baudrate=115200

 

三,配置WinDbg

1,在WinDbg目录内,选中WinDbg.exe创建快捷方式->快捷方式上右键属性->目标处windbg.exe后面加入以下代码:

注意事项:此快捷方式为双机调式用!

2,设置WinDbg符号文件路径,打开WinDbg.exe->文件->符号文件路径->输入symbols的安装路径

 

四,编写下一个hello 驱动程序,以做测试

1,创建一个DriverHello.c的文本文件,复制以下代码:

#include <ntddk.h> //提供一个Unload函数值是为了让这个程序能动态卸载,方便调试 VOID DriverUnload(PDRIVER_OBJECT driver) { //打印一句话 DbgPrint("bye 驱动!!/r/n"); } //DriverEntry,入口函数。相当于main NTSTATUS DriverEntry(PDRIVER_OBJECT driver, PUNICODE_STRING reg_path) { //这里只输出一句话 DbgPrint("Hello 驱动!/r/n"); //设置一个卸载函数,便于这个函数的退出 driver->DriverUnload = DriverUnload; return STATUS_SUCCESS; }

 

2,创建文件名为makefile及sources的两个文本文件,贴入如下代码:

 //makefile

###########以下为贴入代码############################

!ifdef NTMAKEENV

# DO NOT EDIT THIS FILE!!!  Edit ./joycpl.inc. if you want to add a new
# source file to this component.  This file merely indirects to the
# build environment specific common make file.

!INCLUDE $(NTMAKEENV)/makefile.def

!else

# Win 95
#

ROOT    =..
WIN32   =TRUE
!include ../../build.mk

!endif

########################################

 

 

//sources文件

###########以下为贴入代码##########################

!IF 0

Copyright (c) 1989 - 2000 Microsoft Corporation


!ENDIF

LINKER_STACKSIZE=-STACK:4096,1024

# Compile for Win95 for widest compatibility
CHICAGO_PRODUCT=1
WIN32_IE_VERSION=0x0300

UMTYPE=windows

TARGETNAME=DriverHello
TARGETPATH=obj
TARGETTYPE=DRIVER
SOURCES=DriverHello.c

 

 

五,编译

1,安装过WDK后,可以在开始菜单程序中找到

windows xp checked build Environment

Windows XP Free Build Environment

以上两项

2,选择checked(相当于VC内的DEBUG模式)进入到传说中的黑屏白字窗口.

3,用DOS命令更改当前路径为你的DriverHello的工程目录下。

4,输入build

5,查看执行后的提示,确认无错,可以到工程目录内,找到一个DriverHello.sys文件。

 

六,本地调试

1,打开DbgView.exe ,以等待输出调试信息。

2,打开驱动加载工具,加载DriverHello.sys文件->启动->停止->卸载  依次观察输出.

 

 

七,双机调试

1,修改源代码,加入断点如下所示:

#include <ntddk.h> //提供一个Unload函数值是为了让这个程序能动态卸载,方便调试 VOID DriverUnload(PDRIVER_OBJECT driver) { //打印一句话 DbgPrint("bye 驱动!!/r/n"); } //DriverEntry,入口函数。相当于main NTSTATUS DriverEntry(PDRIVER_OBJECT driver, PUNICODE_STRING reg_path) { #if DBG _asm int 3 #endif //这里只输出一句话 DbgPrint("Hello 驱动!/r/n"); //设置一个卸载函数,便于这个函数的退出 driver->DriverUnload = DriverUnload; return STATUS_SUCCESS; }

 

2,起动配置好的XP虚拟机环境,(虚环境内需要驱动加载工具)-->启动选择调试模式->黑屏,等待下面这一步。

3,打开Windbg.exe(刚建立的快捷方式),连接正常会有提示,看命令窗口中的命令行,输入g以让虚拟机正常运行。

 

4,虚拟机运行正常,打开驱动加载工具,加载->启动->停止->卸载 以观察Windbg.exe内的输出信息等。

 

 

一个Hello 驱动就这吧!!!欢迎各位驱动爱好者一起讨论软件驱动的相关问题!

你可能感兴趣的:(虚拟机,object,Microsoft,Build,工具,include)