基于IRP的Windows设备驱动程序间通讯的实现.pdfVIP

  • 9
  • 0
  • 约8.53千字
  • 约 3页
  • 2018-05-09 发布于福建
  • 举报

基于IRP的Windows设备驱动程序间通讯的实现.pdf

第23卷第4期 四川理工学院学报(自然科学版) Vo1.23 No.4 2010年 8月 JournalofSichuanUniversityofScienceEngineering(NaturalScienceEdition) Aug.2010 文章编号:1673·1549(2010)04-0414-03 基于 IRP的Windows设备驱动程序 间通讯的实现 居锦武 (四川理工学院计算机学院,四川 自贡 643000) 摘 要:Windows操作系统上,应用程序不能直接访 问设备,访 问要通过 内核中的设备驱动程序实 现。当系统中存在多种被控设备时,可采取一个主驱动程序控制其它设备驱动程序的方式,实现对多个 设备的统一、协调的控制。文章介绍了通过在内核中传递10请求包(IRP)的方式,实现设备驱动程序之 间的数据通讯的方法,该方法首先在 内存 中分配一个共享数据区,并将描述该共享区域的数据结构通过 IRP在驱动程序间传递,实现在驱动程序间的数据通讯。 关键词:内核;设备驱动程序;I/O请求包;共享;通讯 中图分类号 :TP31l 文献标识码 :A 内存映射文件 、互斥对象、信号量等方式实现,但对于运 引 言 行于 内核中的驱动程序,要实现相互之间的通讯 比较困 Windows操作系统限制了应用程序访问硬件设备的 难 。在操作系统 内核中,10管理器在接收到来 自用户 能力…,只有设备驱动程序才能访 问硬件设备,在工业 模式WIN32子系统的请求时,构造一个 IRP,并调用 Io- 控制系统中,有时主控计算机上可能接有多种不同的设 CallDriver函数 ,将 IRP发送给对应的驱动程序。驱动程 备。一般情况下,这些具有不同功能的硬件设备 由各 自 序运行于操作系统的内核模式下,它们的主要工作就是 的驱动程序控制,各驱动程序独立运行。比如在天然气 处理各种各样的IRP 。因此,实现通讯的一种方法是 气矿监测系统中,主控计算机上连接有管道 内监测车控 由主驱动程序构造一个 IRP,并调用函数 IoCallDriver将 制、监测车图像采集、站内气体浓度监测、报警系统、远 IRP发送给硬件设备驱动程序,驱动程序能在 IRP包中 程数据 GPRS模块、自动压井控制等多个硬件设备,这些 放入任意数据,甚至能将内核事件句柄也通过这种方式 系统有些通过 USB总线连接,有些通过PCI总线连接, 传送给另一个驱动程序。如果驱动程序之间的通讯发 各 自都有独立的驱动程序,有必要对它们进行统一、协 生的不频繁时,这种通过 IRP直接实现通讯的方法能够 调的控制管理 。如果在应用程序层次上进行控制 ,由于 工作 的很好 。 应用程序受操作系统线程调度机制的控制,无法进行实 1 IRP的构造与发送 时性较高的控制 。在这种情况下,要对这些硬件设备 进行统一、相互协调 的控制 ,就需要实现驱动程序之 间 I/0请求包 (IRP)是Windows操作系统中,I/O系统 的数据通讯。可以在系统中设计一个主驱动程序,它并 用来处理 I/O请求的数据结构 。当应用层的程序调 不直接控制具体的硬件设备,由它在内核模式下直接与 用 I/O服务时,I/O管理器就在内核中构造一个 IRP,该 其它硬件设备驱动程序通讯,完成对这些驱动程序的统 结构包含 I/0请求在系统中要进行的操作的相关信息。 一 控制。由于驱动程序工作于操作系统的内核模式,不 IRP是个大小可变的结构,在非分页内存池中分配,包括 受系统线程调度的制约,能够实

文档评论(0)

1亿VIP精品文档

相关文档