- 1、本文档共10页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
驱动程序实验报告操作系统课程设计报告驱动程序实验报告操作系统课程设计报告
操作系统课程设计报告
班级: 计科
姓名:
学号:
老师:
时间:2012年X月X日
一、设计目的
操作系统课程主要讲述的内容是多道操作系统的原理与技术,与其它计算机原理、编译原理、汇编语言、计算机网络、程序设计等专业课程关系十分密切。本课程设计的目的综合应用学生所学知识,建立系统和完整的计算机系统概念,理解和巩固操作系统基本理论、原理和方法,掌握操作系统开发的基本技能。
了解文件系统及文件系统驱动程序的一般原理。
学习开发文件系统驱动程序的开发环境,了解其与DDK(Device Drivers Kit,设备驱动程序开发包)的关系。
掌握虚拟磁盘技术,能够编译生成相应的驱动程序并在系统中安装实现。
进一步掌握Windows 7/XP系统中驱动程序的一般结构。
二、设计内容
设备驱动程序设计, 要求如下:
设计Windows XP或者Linux操作系统下的设备驱动程序;
设备类型可以是字符设备、块设备或者网络设备;
设备可以是虚拟的也可以是实际设备;
编写测试应用程序,测试对该设备的读写等操作。
三、设计步骤
1、Windows驱动程序开发基本原理
WDM是“Windows驱动程序模型”的简称,即“Windows Driver Model”。实际上它是一系列集成在操作系统之中的常规系统服务集,用于简化硬件驱动程序的编写,并保证它们在Windows 98/Me/2000中的二进制兼容,WDM(Windows Driver Model)模型是从WinNT3.51和WinNT4的内核模式设备驱动程序发展而来的。WDM主要的变化是增加了对即插即用、电源管理、Windows Management Interface(WMI)、设备接口的支持。WDM模型的主要目标,是实现能够跨平台使用、更安全、更灵活、编制更简单的Windows设备驱动程序。WDM采用了“基于对象”的技术,建立了一个分层的驱动程序结构。WDM首先在Windows98中实现,在Windows2000中得到了进一步的完善,并在后续开发的Windows操作系统中都将存在,比如Windows Me和Windows XP。微软在通过WDM模型的引入,希望减轻设备驱动程序的开发难度和周期,逐渐规范设备驱动程序的开发,应该说,WDM将成为以后设备驱动程序的主流。
下面更深入地介绍一下,WIN32API是如何一步步对设备驱动程序进行读写操作的。如图:
应用程序
应用程序
Win32子系统
设备驱动
硬件抽象层
硬件
IO管理器
用户模式
内核模式
Win32API调用
系统服务接口
传递IRP给驱动程序派遣函数
HAL调用
平台相关操作
图1-1 Windows组件模型
这里以CreateFile API为例,其他操作设备的API类似。首先应用程序调用CreateFile API,这个API是由Win32子系统的三大模块中的Kernel32.dll实现的。CreateFile函数会调用Ntdll.dll中的NtCreateFile函数,其中NtCreateFile是未文档化的函数。
NtCreateFile的作用是穿越用户模式的边界,进入到内核模式,这个步骤是通过软中断实现的。进入到内核模式后,会调用系统的服务函数,这里会调用同名的系统服务NtCreateFile。
NtCreateFile系统函数调用通过I/O管理器,创建IRP并传输到设备的驱动程序中。IRP即输入输出请求包,是驱动程序开发中重要的数据结构。驱动程序的运行,完全是靠IRP驱动的。驱动程序根据IRP进行相应的操作。这些操作一般是对设备的直接操作。
2、设计分析
设备对象都是通过文件文件来调用的,即用户得到关于设备或者文件等的文件对象的指针,通过这个指针访问文件或设备时,系统会自动访问到相应的设备,所以在虚拟磁盘设备时,必须为其指定相应的文件,即通过mount命令,否则任何操作都将无法进行。文件对象是用户态程序可以访问文件、设备、目录和卷等的实例,用户程序通过文件指针访问这些设备,而得到这些文件指针的操作,就是调用系统功能创建文件的过程。
定义设备驱动程序的入口函数,在这个函数中需要完成两件事,通过查询注册表信息来得到可以建立的这杯对象个数,接着向I/O管理器注册四个分发例程,来完成用户对设备的各种请求,并将它们打成IRP包,传入内核,因为部分IRP(I/O请求包)所包含的对虚拟磁盘的请求需要考虑异步情况下的同步问题,给设备启动一个设备工作线。
在处理IRP的相应分发例程结束部分完成三项工作
1)利用IoMarkIrpPending函数通知I/O管理器本分发例程返回状态值STATUS_PENDING表示该IRP还有后续
文档评论(0)