Windows NT 设备驱动程序开发基础(3)

原创 2002年03月03日 09:19:00
1.3 实现细节 
  
  1.3.1 内核代码运行级别 
  
  Windows NT为它的内核模式的代码分配了不同的级别。在同一个CPU上,级别低的过程 
可以被任何级别更大的过程中断。级别由低到高排列如下: 
  
  级别名称       运行于该级别的过程 
  
  PASSIVE_LEVEL  DriverEntry, Unload, ShutDown, DispatchXxx。 
  
  APC_LEVEL      在某些特殊情况下,大存储量设备的驱动程序运行于该级别。 
  
  DISPATCH_LEVEL StartIo, AdapterControl, ControllerControl, IoTimer,Dpc。 
  
  DIRQLs         各种中断处理程序。 
  
  表二 
 1.3.2  几个对象 
  
  i)     I/O请求包(IRP) 
  
      I/O管理器每收到一个来自用户的请求就创建一个该结构,并将其作为参数传给驱 
动程序的DispatchXxx、StartIo过程。该结构中存放有请求的类型,用户缓冲区的首地 
址,用户请求数据的长度等信息。驱动程序处理完这个请求后,也在该结构中添入处理 
结果的有关信息,调用IoCompleteRequest将其返回给I/O管理器,用户程序的请求随即 
返回。 
  
  ii)     DPC 
  
  当驱动程序中要用到Dpc过程时,需要创建该对象。具体作用请见1.3.3。 
  
  iii) 驱动程序对象(DriverObject) 
  
      该对象在驱动程序被启动时由I/O管理器创建,保存有该程序处理各种请求的过程 
入口、该程序所驱动的全部设备对象的链表等。 
  
  iv) 设备对象(DeviceObject) 
  
      每发现一个可以驱动的设备,驱动程序调用IoCreateDevice创建一个该对象。该 

对象有一个指针DeviceExtension指向一块由驱动程序定义的结构,其中保存有关此设备 
的如端口号,中断向量等全部信息。 
  
  v) 中断对象(Interrupt) 
  
  该对象在驱动程序调用IoConnectInterrupt时创建,存有中断及处理的过程的信息。 
当一个中断发生时,I/O管理器用它寻找对应的处理过程。 
  
  
  1.3.3  推迟过程调用(Deferred Procedure Call) 
  
  由于中断处理过程运行于较高的DIRQL级,它们能屏蔽许多级别小于或等于它们的过程 
的执行,如果它们占用CPU时间过长,很容易使系统性能下降。因此中断处理过程应将一 
些不是很紧急的任务放在被称为Dpc的过程中,在完成数据传输等紧急任务后将一个DPC 
对象放在系统DPC队列的末尾,然后退出,尽量早地让出CPU。系统将在完成所有DIRQL级 
的任务后处理DPC队列,在DISPATCH_LEVEL执行每一个DPC 对象指定的Dpc过程,完成中 
处理断过程未尽的任务。 
  
-- 

Windows NT 设备驱动程序开发基础

一、背景介绍  1.1 Windows NT操作系统的组成  1.1.1 用户模式(User Mode)与内核模式(Kernel Mode)  从Intel 80386开始,出于安全性和稳定...
  • cosmoslife
  • cosmoslife
  • 2012年06月17日 15:11
  • 430

Windows NT 设备驱动程序开发基础(5)

1.3.6 缓冲的I/O与直接I/O     在驱动程序创建了一个设备后,可以通过设置DeviceObject的Flags域的值来将设备设 置成缓冲的I/O或直接的I/O。     如果该值被设为DO...
  • kingzeus
  • kingzeus
  • 2002年03月03日 09:21
  • 1208

Windows NT 设备驱动程序开发基础(6)

1.3.8 同步         如果驱动程序有可能在某时刻有多个部分在同时运行,比如有中断处理过程,或 存在多个设备等,对公共数据或代码的访问就需要同步。方法有       i) 自旋锁(SpinL...
  • kingzeus
  • kingzeus
  • 2002年03月03日 09:21
  • 1131

Windows NT 设备驱动程序开发基础(1)

一、背景介绍     1.1  Windows NT操作系统的组成   1.1.1 用户模式(User Mode)与内核模式(Kernel Mode)   从Intel 80386开始,出于安全性和稳...
  • kingzeus
  • kingzeus
  • 2002年03月03日 09:18
  • 2334

Windows NT 设备驱动程序开发基础(8)

1.4 驱动程序的编译链接,调试、安装和启动。         Windows NT下编写驱动程序的环境被称为为DDK(Device Driver Kit) For Micro soft Window...
  • kingzeus
  • kingzeus
  • 2002年03月03日 18:40
  • 1763

Windows NT 设备驱动程序开发基础(4)

1.3.4 查找硬件信息       i) 系统自动搜索到的设备         在系统启动时,组件NTDETECT会自动地搜索计算机上已有的硬件,包括串、并行 口,键盘,鼠标,以及大多数PCI和EI...
  • kingzeus
  • kingzeus
  • 2002年03月03日 09:20
  • 1299

Windows NT 设备驱动程序开发基础(7)

1.3.9 分层     I/O管理器一个有用的功能是允许把一个驱动程序堆在另一个驱动程序之上。这样在分 编写如网络驱动等有协议栈程序时,可以为各层编写相对独立的代码。当驱动程序需要 在不同的平台上移...
  • kingzeus
  • kingzeus
  • 2002年03月03日 09:21
  • 1445

Windows NT 设备驱动程序开发基础(2)

1.2 Windows NT下内核模式设备驱动程序的结构和运行     一般来说,设备驱动程序的任务主要有二:第一,接受来自用户程序的读写请求,把 用户的数据传送给设备,或把从设备接收到的数据传送给用...
  • kingzeus
  • kingzeus
  • 2002年03月03日 09:19
  • 1266

最简单明了的驱动开发说明: Windows NT 设备驱动程序开发基础(转)

关键字 设备驱动程序 一、背景介绍 1.1 Windows NT操作系统的组成 1.1.1 用户模式(User Mode)与内核模式(Kernel Mode) 从Intel 80386开始,出于安全性...
  • shinesi
  • shinesi
  • 2005年11月14日 21:29
  • 1892

LINUX设备驱动程序(第3版)[高清PDF]

下载地址:网盘下载 内容简介 编辑 《LINUX设备驱动程序(第3版)》已针对Linux内核的2610版本彻底更新过了。内核的这个版本针对常见任务完成了合理化设计及相应的...
  • cf406061841
  • cf406061841
  • 2017年05月29日 10:07
  • 2032
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Windows NT 设备驱动程序开发基础(3)
举报原因:
原因补充:

(最多只允许输入30个字)