250 likes | 346 Views
Windows 环境下的设备 驱动程序设计 sigang@mti.xidian.edu.cn. 什么是驱动程序?. 驱动程序即 Driver ,是驱动某种实际或者虚拟设备的一段程序 大部分驱动程序是操作系统核心的一部分 微软提供一些标准设备如鼠标,键盘,网卡,硬盘, u 盘等的驱动程序 自己开发的产品通常需要驱动程序,如 modem ,数码相机,摄像头等. 为什么需要驱动程序. 驱动程序是硬件设备和应用程序之间必不可少的一层 可以把驱动程序当作是对设备的一个抽象,它为应用程序提供一个访问硬件的接口. Windows 驱动程序的发展.
E N D
Windows 环境下的设备驱动程序设计sigang@mti.xidian.edu.cn
什么是驱动程序? • 驱动程序即Driver,是驱动某种实际或者虚拟设备的一段程序 • 大部分驱动程序是操作系统核心的一部分 • 微软提供一些标准设备如鼠标,键盘,网卡,硬盘,u盘等的驱动程序 • 自己开发的产品通常需要驱动程序,如modem,数码相机,摄像头等
为什么需要驱动程序 • 驱动程序是硬件设备和应用程序之间必不可少的一层 • 可以把驱动程序当作是对设备的一个抽象,它为应用程序提供一个访问硬件的接口
Windows 驱动程序的发展 • 实模式Windows (Real-Mode Windows) • 标准模式Windows (Standard-Mode Windows) • 增强模式Windows (Enhanced-Mode Windows ) • Windows98&2k&NT&XP&Server 2003
实模式Windows (Real-Mode Windows) • MS-DOS 和系统基本输入输出系统(BIOS) 就已经提供了许多硬件设备的驱动程序 。 • BIOS 通过一些常用的软件中断,开放出驱动程序的服务 ,像INT 10h 是显示系統中断,INT 13h是磁盘子系統中断,INT 16h 是键盘中断等等。BIOS 也处理硬件中断,并承担对“可编程中断控制器”(Programmable Interrupt Controller ,PIC )的管理任务。 • MS-DOS 也通过软件中断(如 INT 21h 、INT 25h 、INT 26h )提供了系统服务 ,并提供一个机制(CONFIG.SYS 中的 device= 语句),让新的或强化后的驱动程序能夠在系統启动时被加载进操作系统内核。
标准模式Windows (Standard-Mode Windows) • 早期的 Windows 中,MS-DOS 和 BIOS 是最重要的。Windows运行在实模式状态中,这时的Windows充其量不过是一个强化后的MS-DOS图形用户界面而已。从系统角度看,Windows只不过是个大的图形应用程序。 • Intel 80286 的出现,使 Windows能夠在保护模式中运行并获得高达 16MB 实际内存空间。依靠保护模式和实模式的转换,Windows 仍然继续使用MS-DOS 和 BIOS 提供的服务来完成所有的系统需求。这种运作模式被称为 Windows标准模式(Windows standard mode) 。
标准模式Windows (Standard-Mode Windows) • 在 80286 机器上切换实模式和保护模式,系统开销很大 • 显然 Windows 需要一种方法,避免每次一有事件发生,像是键盘被按下或鼠标移动等等,就得切换到实模式。 • 解決方法就是写一个保护模式驱动程序,可以在保护模式中处理 I/O 中断。
标准模式Windows (Standard-Mode Windows) • 这些驱动程序直到今天我们都还在使用,在 SYSTEM 子目录中看到的扩展名为 .DRV 的文件都是.包括 MOUSE.DRV ,KEYBOARD.DRV, SYSTEM.DRV,SOUND.DRV 等等 • 我把它们称为 ring3 DLL 驱动程序,因为它们实质上都是 16 位 Windows 动态链接库(DLLs ) • 它们的任务是在不离开 CPU保护模式的前提下,和 Windows KERNEL 、USER 、GDI 模块之间形成接口。
增强模式Windows (Enhanced-Mode Windows ) • Intel 80386 CPU 使 Windows的第三种操作模式(所谓的 enhanced mode)成为可能。在此模式中 Windows 采用分页(paging) 和虚拟86(V86) 特性,创造出虛拟机器(VirtualMachines ,VMs )。 • 对一个应用程序而言,VM 就像一独立的的个人电脑,独自拥有自己的键盘、鼠标、显示器等等硬件。而实际上,经过所谓的虛拟化(virtualization ),数个 VMs 共享相同硬件。
增强模式Windows (Enhanced-Mode Windows ) • 虛拟化是 VxDs 的工作。VxD 的名称来自于 “virtual x device”,意思是此驱动程序用来虛拟化某个(x )设备。例如:VKD用来虛拟化键盘, VMD 用来虛拟化鼠标。使Windows 和任何一个MS-DOS程序都自认为独立拥有属于自己的键盘和鼠标。 • 某些VxD并不是为了虚拟化某些硬件,而是提供各种底层系统服务,如页面交换(PAGESUAP)和页面文件(PAGEFILE),他们共同管理交换文件(SWAP FILE) • 在windows95和windows98中,有很多这种VxD 驱动程序
增强模式Windows (Enhanced-Mode Windows ) • CIH病毒就是运用的是VXD技术。所以不可能在 NT和windows 2k及以后的操作系统中感染CIH病毒。 因为这些系统不支持VxD 特性
Windows98&2K&NT&XP&Server 2003 • 1996年的Windows Hardware Engineering Conference( WinHEC)会议上,Microsoft宣布了一种新的Windows设备驱动程序模型——Windows Driver Model(WDM)。 • WDM模型的驱动程序是建立在NT式驱动程序之上,主要是加入了即插即用(plug and play )特性
NT式驱动程序 • 在Windows NT中,80386保护模式的“保护”比Windows 95中更坚固 。比如在Windows 95中,至少应用程序I/O操作是不受限制的,而在Windows NT中,应用程序连这点权限都被剥夺了。在NT中应用程序几乎不太可能进入真正的ring0层。 • 在Windows NT中,存在三种Device Driver: Virtual device Driver ,GDI Driver ,Kernel Mode Driver
NT式驱动程序 • Virtual device Driver (VDD),通过VDD,16位应用程序,如DOS 和Win16应用程序可以访问特定的I/O端口(注意,不是直接访问,而是要通过VDD来实现访问)。 • GDI Driver,提供显示和打印所需的GDI函数。 • Kernel Mode Driver ,实现对特定硬件的操作,是Windows NT中唯一可以对硬件中断和DMA进行操作的Driver。SCSI 小端口驱动和 网卡NDIS 驱动都是Kernel Mode Driver的一种特殊形式。
驱动程序的现在 • WDM是主流,它在Windows NT 的Kernel Mode Driver 之上加入了PNP特性 • 支持的操作系统包括windows 98,ME,2000,XP, SERVER 2003 • 我们现在要写的基本上都是WDM模型的驱动程序
驱动程序的将来 • Windows Driver Foundation(WDF),是微软新一代的驱动程序模型,现在相应的ddk 还在测试阶段 • 支持的操作系统包括: Microsoft Windows 2000Microsoft Windows XPMicrosoft Windows Server 2003Microsoft Windows "Longhorn"
结论 • WDM之前的VxD式和NT式驱动程序已经逐渐退出历史舞台 • WDF比WDM更先进,但是对于我们还是可望而不可及。 • 所以,我们现在还是要开发基于WDM模型的驱动程序,所以我们以后讲的都是WDM模型的驱动程序设计知识
驱动程序开发工具 • Windows ddk • DriverWorks + Windows ddk • Windriver
开发工具比较 • 上述三种开发工具,难度由大到小,开发速度当然也是由慢到快。 • 所开发的程序的执行效率是由高到低 • 产品级的驱动程序通常都是用ddk直接开发 • 以前驱动程序课中师用第二种开发工具,我们选用难度最高,但是程序的执行效率也最高的第一种直接用ddk开发
开发环境 • 操作系统,通常现在我们在Windows 2000上开发驱动程序,因为在Windows 2000上开发的驱动程序在以后的操作系统中都能用 • 在Windows 2000中需要安装的软件包括,Visual c++,Windows 2000 ddk,MSDN • 调试工具可以选择Windbg和softice,通常用softice的多。
环境设置 • 驱动程序开发中可以完全没有必要使用Visual c++,ddk有一套自带的编译链接工具,但是使用Visual c++环境,易于调试 • 但是最后编译和连接时使用的不是visual c++的编译工具,所以需要对visual c++环境进行设置。 • 设置的细节可以参考后面列出的参考书,也可以在网上查找。
参考书 • Windows WDM设备驱动程序开发指南 孙义 等译 机械工业出版社 • Windows 核心编程 王建华 等译 机械工业出版社 • Window 2000设备驱动程序开发指南 机械工业出版社
可能要经常访问的网站 • http://www.osr.com. • http://www.driverdevelop.com. • http://www.microsoft.com
相关的新闻组 • Microsoft.public.development.device.drivers • Microsoft.public.windowsxp.device_driver.dev • Free.it.computer.hardware.drivers • Microsoft.public.ddk.win2000.multimedia • Microsoft.public.ddk.win2000.printer.video