首页 理论教育 WDM驱动程序模型优化方案

WDM驱动程序模型优化方案

时间:2023-06-28 理论教育 版权反馈
【摘要】:WDM是一个分层化的驱动程序模型,在这个模型中,驱动程序的层或堆栈一起工作处理I/O请求。对于WDM驱动程序而言,最重要的对象是驱动程序对象和设备对象。另一个驱动程序称为总线驱动程序,它负责管理硬件与计算机的连接。图3-8所示为WDM驱动程序的程序组。图3-8 WDM驱动程序的程序组在这些子程序中,DriverEntry、AddDevice和一些Dispatch程序是驱动程序的必备部分。若驱动程序要对IRP进行排队,则它必须包括StartIO程序。

WDM驱动程序模型优化方案

WDM是一个分层化的驱动程序模型,在这个模型中,驱动程序的层或堆栈一起工作处理I/O请求。Windows2000/XP的I/O子系统是基于对象的。对于WDM驱动程序而言,最重要的对象是驱动程序对象和设备对象。Windows2000/XP的I/O子系统是包驱动的系统,在这种系统中,每个I/O操作可以通过一个IRP描述,驱动程序的工作过程就是对IRP的处理过程。

WDM中设备对象和驱动程序的分层如图3-7所示。图3-7中左边是一个设备对象堆栈,设备对象是系统为帮助软件管理硬件而创建的数据结构。处于堆栈最底层的设备对象称为物理设备对象(PDO),在设备对象堆栈的中间某处有一个对象称为功能设备对象(FDO),在FDO的上面和下面还会有一些过滤器设备对象(FiDO)。位于FDO上面的过滤器设备对象称为上层过滤器,位于FDO下面(但仍在PDO之上)的过滤器设备对象称为下层过滤器。

978-7-111-33186-5-Part01-29.jpg

图3-7 WDM中设备对象和驱动程序的分层

在WDM驱动程序模型中,每个硬件设备至少有两个驱动程序。其中一个驱动程序称为功能驱动程序,即通常所说的硬件设备驱动程序。它了解硬件工作的所有细节,负责初始化I/O操作,处理I/O操作完成时所产生的中断事件,并为用户提供一种适当的设备控制方式。另一个驱动程序称为总线驱动程序,它负责管理硬件与计算机的连接。

有些设备除了这两个驱动程序以外还有过滤器驱动程序,过滤器驱动程序分为上层过滤器驱动程序和下层过滤器驱动程序两种。上层过滤器驱动程序运行在功能驱动程序之上,它在功能驱动程序之前获得输入输出请求(I/O Request Packet,IRP),因此通过它,设备可以增加功能驱动程序所没有的功能,从而纠正设备以前的驱动程序存在的不足,或者是对它进行软件升级。下层过滤器驱动程序在功能驱动程序发出IRP之后、总线驱动程序获得IRP之前,获得IRP。它可以根据功能驱动程序改变总线驱动程序的一些操作。(www.xing528.com)

驱动程序实际上是一组子程序的组合,操作系统通过按步骤地调用这些程序来完成IRP要求的工作。图3-8所示为WDM驱动程序的程序组。

978-7-111-33186-5-Part01-30.jpg

图3-8 WDM驱动程序的程序组

在这些子程序中,DriverEntry、AddDevice和一些Dispatch程序是驱动程序的必备部分。若驱动程序要对IRP进行排队,则它必须包括StartIO程序。若驱动程序要进行直接内存存取(Direct Memory Access,DMA)传输,则它要有AdaperControl程序。而需要中断的驱动程序则必须具有OnInterrupt和DpcForLst程序。每个驱动程序都根据自己需要的功能去选择实现需要的子程序。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈