1、 DDK的安装和简要介绍
为了编译驱动程序,需要一个编译器。由于驱动程序由C语言编写,所以使用任何一种C语言编译器都可以进行驱动程序的编译。但是DDK编译环境默认选用MSVC进行编译,并针对这种情况对DDK中的头文件进行了优化。
这里我们要在win2000上进行试验,所以我们应该从网上下载Win2000的DDK并进行安装。我们假设读者按照提示将DDK安装到了D:\programs\NTDDK目录。安装DDK后,在DDK程序组下有checked和free两个编译环境,checked环境用于编译带调试信息的驱动程序,free环境则用于编译正式发布版本的驱动程序。DDK安装后,可以在DDK的安装目录下看到若干子目录,其中bin子目录下存放的是可执行文件,help子目录下存放着关于DDK的各种帮助文件,inc子目录下存放的是编译驱动程序所需的各种头文件,src子目录下存放的是各种驱动程序例子的源代码等,本试验使用的Packet驱动就来自于此。这里需要特别说明的是DDK在src子目录下包含的几十个真实的驱动程序的源代码,这些例子覆盖了驱动程序编程的各个方面,是学习驱动程序开发的最好资源。
最后需要注意的是,必须在安装DDK之前安装MSVC,否则DDK的Setevn.bat批处理文件在运行是就不能正确的建立编译环境。
2、驱动程序的修改
我们可以再vc中创建一个win32 console applicatoin工程,将其中D:\programs\NTDDK \src\network\ ndis\packet\driver目录下的驱动程序源文件(除makefile和sources外)假如到工程中。这样我们就可以看见程序中的各个函数和数据结构。根据试验文档中的介绍,我们很容易对相关的函数和数据结构进行修改。
3、驱动程序和其应用程序的编译
驱动程序的编译由DDK提供的BUILD工具控制,该工具位于DDK的bin子目录下。一般而言,在编译一个驱动程序时需要在源文件的目录下提供如下三个文件:MAKEFILE、SOURCES和DIRS。这三个文件均没有扩展名。BUILD根据这三个文件的内容对目标驱动程序进行编译,并且创建BUILD.LOG、BUILD.ERR等文件作为输出,如果正常,执行BUILDD的结果是创建驱动程序的可执行版本,其文件类型是.SYS。
关于上述的MAKEFILE等三个文件,在DDK的每一个例子中都给出了相应的实例。其中对所有的驱动程序而言,MAKEFILE都是一样的,微软建议不要修改该文件。SOURCES文件中包含了一些宏,用以指导BUILD工具如何生成驱动程序的可执行文件、从哪里获得输入及从哪里进行输出。DIRS文件包含了BUILD工具要处理的目录,这些目录必须是当前目录的子目录,在这些目录下边,BUILD将查找其它的DIRS文件或者是MAKEFILE和SOURCES文件。我们在本实验中不需要改动这些文件,沿用例子中现成的即可。
下面就具体介绍试验中如何来编译我们的驱动程序“Packt”。
首先,读者可以先将DDK原来的packet例子程序备份,然后用改动后的驱动程序源码覆盖原先的代码(即覆盖packet->driver目录下的代码,修改后的代码已经给出)。
然后开始编译。顺次选择开始->程序->Development kits->Windows 2000 DDK->Checked Build Environment,将出现一个控制台窗口。使用cd命令进入D:\programs\NTDDK \src\network\ ndis\packet目录(即驱动程序和相应应用程序所在的目录),键入build命令开始编译,在该目录下的dirs文件的控制下可以同时编译driver目录下的驱动程序和testapp目录下用于测试驱动程序的应用程序;即同时得到改动后的驱动程序和测试该驱动程序的应用程序。
4、驱动程序的安装
DDK给出了Packe协议驱动程序的安装信息文件packet.inf;将该文件同packet.sys放到同一目录下,就可以进行安装了,具体步骤如下:打开本地连接的属性窗口,进入安装功能界面。选择添加协议->从磁盘安装;然后选中对应的Packet.inf即可,安装完毕后,“本地连接 属性”栏中将会显示出新安装的协议“DDK PACKET Protocol”,此时我们就可以在应用程序中通过该驱动获取网络数据了。
5、驱动程序的测试
如上将改动后的packet驱动程序安装到我们的机器上后,就可以通过应用程序来使用本驱动获取网络数据了。这里,我们沿用DDK中随packet协议驱动一并给出的应用程序“packapp”。该应用程序同Packet驱动程序位于同一目录下。实际上,前面已经提到了,我们可以同时编译得到驱动程序和测试应用程序packeapp.exe。运行该应用该程序后,可以通过filter菜单命令设定想要截取的网络数据类型。在没有对驱动程序进行改动前,packapp程序运行起来后,在发出一个读请求后会等待驱动从网络上捕获下一个数据包。如果将获取包的类型设置为"direct",而此时并不进行网络操作,则packapp的读请求将一直等待,直到下一个网络操作(比如浏览网页)进行位置。而将驱动程序进行改造后,如果你之前进行了任何网络操作,比如收发了email,则packet驱动已经在内部储存了一些数据,这时你再如上提出都数据请求,则会即时得到响应。不过此时获取的是刚才到达的网络数据。
另外,由于驱动程序使用一个常量"TRANSMIT_PACKETS " 维护数据缓冲区的长度,所以,在没有所要求类型的新的网络数据到达之前,暂存在数据缓冲队列中的数据最多可以响应" TRANSMIT_PACKETS "次的读数据请求。
没有合适的资源?快使用搜索试试~ 我知道了~
操作系统实验指导(电子书)
共156个文件
c:50个
h:12个
txt:10个
需积分: 9 72 下载量 155 浏览量
2008-10-12
10:59:12
上传
评论
收藏 4.88MB RAR 举报
温馨提示
操作系统实验指导,有部分内容是英文的,英文基础不太好的请不要下了!
资源详情
资源评论
资源推荐
收起资源包目录
操作系统实验指导(电子书) (156个子文件)
abc 8B
atoi 11KB
filesys.c.bak 11KB
bits 11KB
packet.c 36KB
read.c 19KB
ysh.c 19KB
FileDiskDeviceControl.c 13KB
FileDiskDeviceControl.c 13KB
filedisk.c 12KB
filedisk.c 12KB
filedisk.c 12KB
filesys.c 11KB
job.c 9KB
FileDiskOpenFile.c 8KB
FileDiskOpenFile.c 8KB
openclos.c 5KB
DriverEntry.c 4KB
DriverEntry.c 4KB
FileDiskThread.c 4KB
FileDiskThread.c 4KB
write.c 4KB
FileDiskCreateDevice.c 3KB
FileDiskCreateDevice.c 3KB
vm.c 3KB
pgfault.c 3KB
file.c 2KB
enq.c 1KB
stat.c 1KB
FileDiskReadWrite.c 1KB
FileDiskReadWrite.c 1KB
FileDiskDeleteDevice.c 1KB
FileDiskDeleteDevice.c 1KB
error.c 762B
deq.c 728B
child.c 687B
FileDiskCloseFile.c 620B
FileDiskCloseFile.c 620B
FileDiskCreateClose.c 488B
FileDiskCreateClose.c 488B
FileDiskUnload.c 430B
FileDiskUnload.c 430B
readproc.c 370B
eof.c 333B
bits.c 271B
gettime.c 254B
gettime.c 252B
sigstop.c 195B
xtdy.c 141B
calc.c 124B
atoi.c 111B
bin.c 110B
tolower.c 96B
task1.c 62B
calc 11KB
child 12KB
R_WP1.cpp 8KB
VIRTUMEM.cpp 6KB
main.cpp 4KB
deq 42KB
dirs 20B
dirs 20B
readme.doc 341KB
VIRTUMEM.dsp 4KB
R_WP1.dsp 4KB
VIRTUMEM.dsw 539B
R_WP1.dsw 533B
enq 42KB
eof 12KB
R_WP1.exe 232KB
VIRTUMEM.exe 204KB
filedisk.exe 156KB
file 26KB
filesys 34KB
gettime 14KB
gettime 12KB
完全版ntifs.h 220KB
完全版ntifs.h 220KB
ntifs.h 9KB
ntifs.h 9KB
ntifs.h 9KB
ntifs.h 9KB
function.h 7KB
packet.h 6KB
para.h 3KB
filesys.h 3KB
job.h 2KB
ysh.h 377B
Project1.htm 169KB
Project3.htm 43KB
Project4.htm 6KB
Project2.htm 5KB
vc60.idb 193KB
vc60.idb 129KB
R_WP1.ilk 319KB
VIRTUMEM.ilk 273KB
filedisk.img 8MB
job 50KB
load 92B
Makefile 471B
共 156 条
- 1
- 2
lan_xueer
- 粉丝: 1
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0