WDM(Windows Driver Mode)是微软公司为Windows的驱动程序设计的一种通用的驱动程序模型。相比以前的KDM和VXD来说,他的性能更高、系统之间移植更加方便。所以,随着系统的升级,WDM已经成为Windows 2000系统下驱动程序开发的主流。作为WDM模型之中一类特殊的驱动程序,过滤器驱动程序(Filter driver)可以在不更改现有驱动程序的情况下,方便地修改、增加现有驱动程序的功能。特别是对于Windows 2000已经提供了通用驱动程序的硬件设备,通过编写过滤器驱动程序,可以以较小的代价扩展硬件现有的功能。因此具有很强的实际应用价值。
1 Windows
《基于Windows 2000的过滤器驱动程序设计》
Windows 2000时代的驱动程序开发领域,WDM(Windows Driver Model)扮演着核心角色。WDM是一种通用驱动程序模型,相较于早期的KDM和VXD模型,WDM在性能上有了显著提升,并且在不同操作系统间的移植性更强。随着技术的发展,WDM成为了Windows 2000系统下驱动程序开发的首选方案。
过滤器驱动程序是WDM模型中一种特殊的存在,它的主要特点是能够在不改动现有驱动程序的基础上,轻松地增强或修改已有驱动的功能。这对于那些已经拥有Windows 2000通用驱动的硬件设备来说,提供了扩展功能的新途径,而且成本相对较低,具有很高的实用价值。
Windows 2000的I/O请求处理机制是整个驱动程序工作的基础。操作系统采用分态模型,用户应用程序运行在用户态,而设备驱动等操作系统核心组件则在核心态运行。当用户应用程序发起I/O请求时,这些请求通过Win32子系统API传递,经过I/O管理器的参数校验和安全性检查后,转化为IRP(I/O请求包)。I/O管理器将IRP传递给相应的驱动程序,并通知用户应用程序操作尚未完成。驱动程序通过硬件抽象层与硬件交互,完成I/O操作后,调用内核服务例程结束IRP,此时I/O管理器将结果返回给Win32及用户应用程序。
WDM驱动程序模型的架构是一个层次分明的系统。设备对象堆栈是核心,其中包含了物理设备对象(PDO)、功能设备对象(FDO)以及过滤器设备对象(FDO)。PDO代表设备与总线的连接,FDO反映了设备的核心功能,而FDO之上的上层过滤器和FDO之下的下层过滤器则提供了更多的灵活性。总线驱动程序负责设备的枚举和管理,功能驱动程序控制设备的主要功能,而过滤驱动程序则穿插在它们之间,实现功能的拓展和优化。
过滤器驱动程序的作用在于它可以拦截、监控和修改IRP流,实现对原始驱动程序行为的调整,而无需直接修改原有代码。例如,上层过滤器可以为用户提供额外功能或修复功能驱动程序的不足,下层过滤器则能在IRP传递到总线驱动程序前进行干预,允许对硬件交互进行更精细的控制。
基于Windows 2000的过滤器驱动程序设计是驱动程序开发中的一个重要分支,它充分利用WDM的优势,为设备功能的定制和扩展提供了有效途径,同时降低了维护和升级的成本。在实际应用中,过滤器驱动程序已经成为提高硬件设备兼容性和功能性的关键工具。