MSDN Kernel-Mode Driver Architecture学习笔记(1)——Introduction to Windows Drivers(1)

随学随记,暂时未经编程验证 Written by HOOK_TTG(Jamie Jiang)

 

关键词:

NT-based 基于NT技术

User-Mode Drivers 用户模式驱动程序

Kernel-Mode Drivers 内核模式驱动程序

WDM(Windows Driver Mode) Windows驱动模型

1、Windows组件概述

 

下图显示了基于NT技术操作系统主要的内部组件

Windows Components

 

据上图可知,基于NT技术操作系统包含了 User-modeKernel-mode组件。内核模式组件中的每一个子组件都提供了定义好的便于识别使用的功能函数接口,而且每个子组件都是相互独立的。

对于Kernel-mode驱动编写者主要需要关注的执行组件有:I/O Manager(输入/输出管理器)configuration Manager(配置管理器)Plug and Play Manager(即插即用管理器)Power Manager(电源管理器)Memory Manager(内存管理器)Executive Support(执行支持)Process Structure(进程结构)Kernel(内核)以及 Hardware Abstraction Layer(HAL 硬件抽象层)。有些编写者还需要关注的组件有Object Manager(对象管理器) Security Reference Monitor(安全基准监视器)

在上图中,File System(文件系统)intermediate(中间件)Lowest-Level Drivers(底层硬件驱动)这三个组件都包含在同一个I/O Manager组件中,这是因为I/O操作的范围太广泛太复杂了,对于处理各类I/O操作的驱动也很多且琐碎。

2、Windows驱动程序的类型

微软的Windows驱动程序有两个基本类型:

l   User-mode Drivers在用户模式下运行,它们提供了一个供Win32应用程序与Kernel-mode Drivers或者其他操作系统组件之间交互的接口。

例如,在Windows Vista系统中,所有的打印机驱动程序都运行在用户模式。如果要深入了解打印机驱动组件,请参看 Introduction to Printing

l   Kernel-mode Drivers在内核模式下运行,并且是执行组件的一部分。执行组件由内核模式操作系统组件组成,主要用来管理I/O、即插即用内存、进程和线程、安全等等。Kernel-mode Drivers是分层结构。大体上,高一层的驱动程序通常接收来自应用程序、过滤器的数据,然后将数据传递给低一层的提供设备操作的驱动程序。

有些kernel-mode Drivers还是WDM驱动程序。所有的WDM驱动程序都支持即插即用、电源管理。WDM驱动程序是源码兼容的(不是二进制码兼容),可以运行在Windows98/MeWindows2000和更新的操作系统下。

对于操作系统本身来说,kernel-mode drivers是由分散的、模快化组件来实现的,这些组件具有一套定义良好的功能函数。所有的kernel-mode drivers都提供一套系统定义的标准驱动例行程序。

下图将kernel-mode drivers划分了几类:

Driver Level

 

上图所示,kernel-mode drivers具有三个基本类型:Highest-levelintermediate(中间)Lowest-level。这三种类型在功能上有很大不同,但是在结构上只有轻微的不同。

1.      Highest-level drivers:包含支持文件系统的文件系统驱动(FSDs),例如:

n   NTFS 基于NT技术的文件系统

n   File allocation table(FAT) 基于文件分类表的文件系统

n   CD-ROM file system(CDFS) 光盘存储器文件系统

Highest-level drivers总是依赖低一层次的驱动支持,就像中间层功能驱动程序和底层硬件总线驱动程序。

2.      Intermediate drivers:中间层驱动程序。例如虚拟磁盘、镜像或者特定设备类型的class driver。中间层驱动程序依赖低一层次驱动程序的支持。中间层驱动程序再进一步可划分为:

n   Function drivers(功能驱动程序)控制特定I/O总线上的外围设备。

n   Filter driver(过滤器驱动程序)插入他们本身的上一层或者下一层的功能驱动中。

n   Software bus drivers(软件总线驱动程序)提交一套子设备,并供高一层的类、功能或者过滤器驱动程序附加到上面。

例如,一个控制多功能适配器的驱动程序就是一个software bus drivers,因为在多功能适配器上集成了多种设备。

n   一些系统支持的class driver提供了系统定义的class/miniclass接口。实际上一个中间层驱动程序就包含有一个或者多个相关联的miniclass drivers(有时称为minidrivers)。每个相关联的class/minidriver对提供的功能相当于一个function driver或者software bus driver

3.      Lowest-level drivers:控制一条连接外围设备的I/O总线。Lowest-level drivers不依赖更低一层的驱动程序,因为已经是最底层了。

n   HardWare bus drivers(硬件总线驱动程序)由系统提供,并且通常控制I/O总线的动态分配。

硬件总线驱动程序与即插即用管理器协同工作来配置和重新配置系统硬件资源,为所有连接在I/O总线上的由驱动程序控制的子设备。这些硬件资源包括设备内存映射和中断请求(IRQs)。在比Windows2000系统还早的基于NT技术的操作系统中,硬件总线驱动程序归入HAL的一些组件。

n   Legacy drivers(遗留的驱动程序):直接控制物理设备的驱动程序。

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值