预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共83页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

Delphi驱动开发研究序篇—基础知识本教程讲述了如何在以WindowsNT为基础的操作系统上用Delphi开发内核模式驱动程序(KMD),包括NT4.0、2000、XP和2003等操作系统。开发Windows95/98/ME使用的VxD驱动程序方面的知识并不在本教程讲述的范围内。一、内核模式驱动结构概述1.主要组成部分根据地址空间、代码权限和职责的不同,WindowsNT内部划分为两个截然不同的部分。地址空间的享用方式也非常容易理解,整个32位系统的4GB内容被划分为两个相等的部分,用户模式(user-mode)的进程使用的地址空间被映射到低位的2GB上(地址范围00000000-7FFFFFFFh),而高位的2GB(地址范围80000000h-0FFFFFFFFh)则供操作系统的组成部分来使用,如设备驱动程序、系统内存池、系统使用的数据结构等,在这部分中,内存共享的权限和职责等方面就要复杂一点了。下面就是用户模式进程的一些简单分类:◎系统支持进程--如Logon进程(位于\%SystemRoot%\System32\Winlogon.exe)◎服务进程--如Spooler进程(位于\%SystemRoot%\System32\spoolsv.exe)◎用户应用程序--任何Win32、Windows3.1、DOS、POSIX或者OS/2程序◎子系统--Windows内置3个子系统:Win32(位于\%SystemRoot%\System32\Csrss.exe)、POSIX子系统(位于\%SystemRoot%\System32\Psxss.exe)和OS/2子系统(位于\%SystemRoot%\System32\Os2ss.exe),在WindowsXP以及后续的操作系统中,POSIX和OS/2子系统已经被去掉了。而下面是内核模式的一些模块:◎运行模块--内存管理、进程和线程的管理、安全机制等◎内核--线程调度、中断、异常的分派等(运行模块和内核位于\%SystemRoot%\System32\Ntoskrnl.exe)◎设备驱动程序--硬件设备驱动程序、文件系统和网络驱动程序◎硬件抽象层(HardwareAbstractionLayer,HAL)--将内核、设备驱动程序和运行模块和具体的硬件平台隔离开(位于\%SystemRoot%\System32\Hal.dll)◎窗口和图形系统--实现GUI函数,如处理窗口、用户界面的控制和绘画等(位于\%SystemRoot%\System32\Win32k.sys)2.内核模式和用户模式Intelx86体系结构的处理器定义了4个级别的权限(称为Ring),Windows系统使用了Ring0(供特权模式使用)和Ring3(供用户模式使用),Windows系统只使用了2个级别的权限级别的原因是为了和其他一些硬件系统兼容,这些硬件系统只有2个级别的权限,如CompaqAlpha和SiliconGraphicsMIPS等。每个用户模式的进程有其私有的地址空间,这些进程在最低的权限级别下运行(称为Ring3或者用户模式),它们不允许执行CPU的特权指令,对系统所属的数据、地址空间以及硬件等的访问也是被严格限制的,例如,如果某个用户程序访问4G地址空间中的高位2G,那么系统就会立即将其终止执行。要注意的是,进程调用系统功能的时候,可以切换到内核模式执行,但是调用结束后,就返回到用户模式了。用户模式的进程总是被认为是对操作系统稳定性的潜在威胁,所以它们的权限被严格地限制,任何触及这些限制的举动都将使进程被终止。而内核模式的组件则可以共享这些受保护的内核模式内存空间,在特权级别下运行(也称为Ring0),允许执行任何CPU指令,包括特权指令,可以无限制地访问系统数据、代码和硬件资源。内核模式代码运行在系统地址空间中,并总是被认为是可信任的,一旦被装载运行后,驱动程序就是系统的一部分,可以无限制地做任何事情。总的来说,用户模式程序被完全从操作系统隔离,这对操作系统的完整性来说是件好事情,但对某些种类的应用程序来说就太头痛了,比如Debug工具。幸运地是,这些在用户模式几乎不可能完成的任务完全可以通过内核模式的驱动程序来完成,因为这些驱动程序的操作是不受限制的。因此,如果你打算从用户模式存取操作系统内部的数据结构或者函数的话,唯一的方法就是将一个内核模式驱动程序装载到系统的地址空间中(并调用它),这是很简单的事情,操作系统完全支持这样的操作。二、WindowsNT设备驱动程序1.设备驱动程序的分类WindowsNT支持的设备驱动程序的范围很广,它们的分类如下:用户模式的驱动程序:◎虚拟设备驱动程序(VirtualDeviceDrivers/VDD)--用户模式的组件,用于为16位的MS-DOS应