资源描述
设备驱动程序设计,WDM驱动程序简介,第二讲,Windows XP 驱动程序分类,内核模式驱动程序的属性,可移植性:源代码级可移植 可配置性:避免对硬件特征和系统设置作绝对假设;避免在代码中直接引用硬件 可抢先性和可中断性 多处理器安全 基于对象 数据包驱动 异步,Windows XP 系统结构,WDM驱动程序模型,WDM模型主要包含以下内容: 1、描述了设备驱动程序的标准结构和应该完成的主要功能。 2、描述了操作系统为设备驱动提供的各种服务,以及操作系统与设备驱动程序之间详细的交互过程 3、为常见类型的设备提供一系列的总线驱动程序和类驱动程序。,WDM驱动程序的分类,功能驱动:每个WDM驱动都包含功能驱动;它了解使硬件工作的所有细节,负责具体I/O过程,负责处理中断事件,为用户提供一种设备适合的控制方式。 总线驱动:查找并发现硬件设备,确定设备的资源使用情况,管理硬件与计算机的实际连接,负责物理的I/O过程 过滤器驱动:对功能驱动程序执行I/O操作时进行过滤和监视,修改现有功能驱动程序的行为,为用户提供额外服务 类驱动:实现某种设备类型的共通功能,管理整个设备类的基本特征,规范该类设备与操作系统中其它软件环境的接口。采用类驱动有利于分层和功能重用。 迷你驱动:包含在类驱动中,用于管理设备实例的厂商专有特征例程。类驱动和迷你驱动合在一起才构成一个完整的功能驱动程序。,WDM驱动的层次结构,驱动程序如何工作,驱动程序是一个收集让操作系统调用的用来执行各种涉及到硬件操作的子程序的容器。 一些例程,如DriverEntry和AddDevice例程和一些特定的I/O 请求包(IRP)的处理函数会出现在每个这样的容器中 。 需要排队请求的驱动程序可能还有一个StartIo例程。而执行直接存储器存取(DMA)操作的驱动程序会有一个AdapterControl例程。产生硬件中断的驱动程序也会有一个中断服务例程(ISR)和一个延迟过程调用(DPC)例程,sys和exe,像EXE程序一样,驱动程序也是可执行文件。其扩展名为.SYS 在结构上严格地说驱动程序和任何32位的Windows或者控制台的应用程序没什么区别。和EXE程序一样,一个驱动程序也需要许多辅助程序,许多也都是动态链接自操作系统内核或来自一组驱动或者其他的支持库。 但是驱动程序没有主程序。取而代之的是其包含了一批系统可以在适当的时候调用的子程序集。驱动程序除了其自己的硬件外不关心任何别的事情:系统管理了其他的任何事务,包括决定在何时运行你的驱动程序代码。,操作系统与驱动的交互过程,系统运行时设备插入或者系统重新启动发现了某个设备,系统就会装载可执行的驱动程序到内存中,并且调用其DriverEntry例程。DriveEntry做了一些初始化操作之后返回。 即插即用管理器(PnP Manager)调用AddDevice例程,让其做一些与设备实例相关的初始化操作之后返回。 即插即用管理器发送给驱动程序一些IRP,相应的IRP处理函数处理完该IRP之后返回。 一个应用程序打开了设备,因此系统发送给驱动另一个IRP,处理函数进行了少量的操作之后返回,操作系统与驱动的交互过程,应用程序尝试读取或者写入一些数据,因此系统发送一个IRP,处理例程将IRP放入一个队列之后返回。 某些I/O操作引发设备中断,中断服务例程做一些很少的操作,然后请求一个DPC,之后返回。 DPC例程运行了,它可能要读回数据,或者继续下一次的写操作等,然后开始下一个排在队列中的IRP,之后DPC例程返回系统。 随着时间变化,在这期间系统会发送各种IRP给驱动程序,驱动程序进行相应的处理。 最后,用户拔出设备或者关闭系统,这时,系统发送一些IRP,分发例程做好相应的处理,然后返回,系统把驱动程序代码移出内存。,应用程序与驱动的交互,应用程序里面要做的工作首先就是要调用CreatFile 打开设备,具体操作就像打开一个文件一样。 应用程序准备好相应的数据或者缓冲区等,调用相应的WIN32 API如WriteFile,ReadFile,DeviceIoControl等,对设备进行读写等各种操作。 最后应用程序关闭设备,具体操作就像关闭一个文件一样 。,
展开阅读全文