内核模式驱动的介绍

2024-05-04 11:00

1. 内核模式驱动的介绍

Windows系统中两种基本驱动程序之一,它的特点是:1、内核模式驱动程序将在执行其他应用程序代码(包括受保护的子系统代码)的非特权处理器模式中运行。除非用户模式驱动程序调用 Win32 API,否则将无法获取对系统数据的访问权。2、内核模式驱动程序将作为操作系统的执行部分(即支持一个或多个受保护的子系统的基础操作系统组件)运行。大多数设备驱动程序将在内核模式中运行。内核模式驱动程序可执行某些受保护的操作,并可访问用户模式驱动程序无法访问的系统结构。但随着访问权的增加,调试难度和系统损害几率也随之增大。

内核模式驱动的介绍

2. 为什么驱动程序一般在内核态工作

驱动的种类很多,有你所说的设备驱动,但是还有一大类内核驱动。
要理解什么是驱动程序就要知道用户程序和内核的关系。 
应用程序都是用户程序,在执行用户程序是CPU处于用户态,有些特权指令无法运行。 
运行操作系统的代码时,CPU处于内核态,是可以执行特权指令的。 
驱动程序就是用户程序想完成个功能,但是必须要在内核态完成,所以就需要一个内核态的助手,这个助手就是驱动程序。驱动程序是加载到内核里的。

3. 内核模式驱动的主要组成部分:

根据地址空间、代码权限和职责的不同,Windows NT内部划分为两个截然不同的部分。地址空间的享用方式也非常容易理解,整个32位系统的4GB内容被划分为两个相等的部分,用户模式(user-mode)的进程使用的地址空间被映射到低位的2GB上(地址范围00000000 - 7FFFFFFFh),而高位的2GB(地址范围80000000h - 0FFFFFFFFh)则供操作系统的组成部分来使用,如设备驱动程序、系统内存池、系统使用的数据结构等,在这部分中,内存共享的权限和职责等方面就要复杂一点了。下面就是用户模式进程的一些简单分类:◎ 系统支持进程--如Logon进程(位于\%SystemRoot%\System32\Winlogon.exe)◎ 服务进程--如Spooler进程(位于\%SystemRoot%\System32\spoolsv.exe)◎ 用户应用程序--任何Win32、Windows 3.1、DOS、POSIX或者OS/2程序◎ 子系统--Windows内置3个子系统:Win32(位于\%SystemRoot%\System32\Csrss.exe)、POSIX子系统(位于\%SystemRoot%\System32\Psxss.exe)和OS/2子系统(位于\%SystemRoot%\System32\Os2ss.exe),在Windows XP以及后续的操作系统中,POSIX和OS/2子系统已经被去掉了。而下面是内核模式的一些模块:◎ 运行模块--内存管理、进程和线程的管理、安全机制等◎ 内核--线程调度、中断、异常的分派等(运行模块和内核位于\%SystemRoot%\System32\Ntoskrnl.exe)◎ 设备驱动程序--硬件设备驱动程序、文件系统和网络驱动程序◎ 硬件抽象层(Hardware Abstraction Layer, HAL)--将内核、设备驱动程序和运行模块和具体的硬件平台隔离开(位于\%SystemRoot%\System32\Hal.dll)◎ 窗口和图形系统--实现GUI函数,如处理窗口、用户界面的控制和绘画等(位于\%SystemRoot%\System32\Win32k.sys)

内核模式驱动的主要组成部分: