windows驱动入门,DDK中例子的实用方法
首先,windows下驱动开发,要有一整套的开发调试工具。在本例子中要用到如下工具:
windbg -- Windows下内核模式驱动调试的一大利器。(microsoft开发的哦!很好找的)。
vmware 5.5.4虚拟机,安装windows XP sp2的虚拟机。(用于远程调试windows驱动,省着开两台机器,具体配置方法下面会介绍的。)。
Visual C++ 6.0,
Windows DDK 3790.1830
什么你没有?赶紧去找啊。
在VMware中将系统配置为调试模式,为虚拟机添加一个com口设备,用管道的方式连接到主系统。
在虚拟机的属性页
选择其中的Edit virtual machine settings->hardware->add->next->serial port->output to named pipe-next.
设置中选择:
Named pipe
this end is the server
the other end is an application
按确定完成。
启动虚拟机
进入系统后修改系统分区下的boot.ini文件(通常该文件是隐藏的,只要在资源管理器的“工具”->“文件夹选项”->“查看”在“高级设置”中将,“隐藏受保护的操作系统文件 (推荐)”前的对号取消,选中“显示系统文件夹内容”和“显示隐藏文件”,按“确定”返回,就可以查看,将boot.ini文件的内容改成如下形式。
[boot loader]
timeout=30
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 - DEBUG" /noexecute=optin /fastdetect /bootlog /debug /debugport=COM1: /baudrate=115200
保存文件。重启系统,就会看到启动菜单,其中显示:
“Microsoft Windows XP Professional"”和“Microsoft Windows XP Professional - DEBUG”两个选项。
如果选前面的一个,就会正常启动系统,后面的一个是我们要用到的系统调试运行模式,如果不调试驱动,不要选择第二中启动方式,(系统启动速度会很慢的)。
下面来说明实用windbg的联机调试方法。
启动windbg 选择菜单“File”->“Kernel Debug”->“com”
将Baud Rate设置为“115200”,port设置为“\\.\pipe\com_1”,选中“reconnect”,“pipe”,这里需要等一下在按确定,将虚拟机启动到启动菜单时,选择第二项,进入调试模式。这时再按Windbg中的确定。如果连接成功,会出现类似这样的提示
“Connected to Windows XP 2600 x86 compatible target, ptr64 FALSE”
“Kernel Debugger connection established.”
证明已经建立成功了。
选择DDK中最简单的例子。对应文件在,DDK安装目录的“src\general\cancel”路径下,由于我要在xp下调试这个驱动,所以在DDK菜单中选择“Build Environments”->“Windows XP”->“Windows XP Checked Build Environment”启动命令行,进入到上面目录“DDK安装目录\src\general\cancel\sys”命令行中输入make回车确定,经过一段构建就会在当前目录的“objchk_wxp_x86\i386”下生成一个cancel.sys文件。在进入“DDK安装目录\src\general\cancel\exe”文件下,实用make命令建立测试文件。同样在当前目录的相对路径“objchk_wxp_x86\i386”下可以发现canclapp.exe文件。将上面的sys和exe文件复制到wmvare中,(对于安装vmwaretools的虚拟系统可以直接用鼠标拖拽到虚拟机中,在虚拟机的命令行下运行cancelapp.exe回去在看看Windbg,你就会看到,测试系统和windbg的操作已经联动了。可以在windbg中按ctrl+pausebreak暂停调试系统的运行。在windbg的命令行中输入g就可再次继续运行系统。
再在文件中添加一点个性化的东西。打开“DDK安装目录\src\general\cancel\sys”下cancel.c文件,在“DriverEntry”函数中添加如下代码
开始的位置dprint("This is a driver debug test !!!");
保存文件。再次按照上面的方法构建cancel.sys文件。构建成功后,再把cancel.sys文件拷贝到虚拟机中运行一下canclapp.exe看看windbg中?我们添加的东西显示出来了吧?。
驱动运行时的安装方法,可以参考cancel例子exe目录下的install.c和testapp.c文件,里面提供了标准的内核模式驱动安装的例程,