驱动程序实验报告操作系统课程设计报告


    


    操作系统课程设计报告









    班级: 计科
    姓名:
    学号:
    老师:
    时间:2012年X月X日


    设计目
    操作系统课程讲述容道操作系统原理技术计算机原理编译原理汇编语言计算机网络程序设计等专业课程关系十分密切课程设计目综合应学生学知识建立系统完整计算机系统概念理解巩固操作系统基理原理方法掌握操作系统开发基技
    1 解文件系统文件系统驱动程序般原理
    2 学开发文件系统驱动程序开发环境解DDK(Device Drivers Kit设备驱动程序开发包)关系
    3 掌握虚拟磁盘技术够编译生成相应驱动程序系统中安装实现
    4 进步掌握Windows 7XP系统中驱动程序般结构

    二设计容
    设备驱动程序设计 求:
    1 设计Windows XP者Linux操作系统设备驱动程序
    2 设备类型字符设备块设备者网络设备
    3 设备虚拟实际设备
    4 编写测试应程序测试该设备读写等操作
    三设计步骤
    1Windows驱动程序开发基原理
    WDMWindows驱动程序模型简称Windows Driver Model实际系列集成操作系统中常规系统服务集简化硬件驱动程序编写保证Windows 98Me2000中二进制兼容WDM(Windows Driver Model)模型WinNT351WinNT4核模式设备驱动程序发展WDM变化增加插电源理Windows Management Interface(WMI)设备接口支持WDM模型目标实现够跨台更安全更灵活编制更简单Windows设备驱动程序WDM采基象技术建立分层驱动程序结构WDM首先Windows98中实现Windows2000中进步完善续开发Windows操作系统中存Windows MeWindows XP微软通WDM模型引入希减轻设备驱动程序开发难度周期逐渐规范设备驱动程序开发应该说WDM成设备驱动程序流
    面更深入介绍WIN32API步步设备驱动程序进行读写操作图:
    应程序
    Win32子系统
    设备驱动
    硬件抽象层
    硬件
    IO理器
    户模式
    核模式
    Win32API调
    系统服务接口
    传递IRP驱动程序派遣函数
    HAL调
    台相关操作

    图1-1 Windows组件模型

    里CreateFile API例操作设备API类似首先应程序调CreateFile APIAPIWin32子系统三模块中Kernel32dll实现CreateFile函数会调Ntdlldll中NtCreateFile函数中NtCreateFile未文档化函数
    NtCreateFile作穿越户模式边界进入核模式步骤通软中断实现进入核模式会调系统服务函数里会调名系统服务NtCreateFile
    NtCreateFile系统函数调通IO理器创建IRP传输设备驱动程序中IRP输入输出请求包驱动程序开发中重数结构驱动程序运行完全IRP驱动驱动程序根IRP进行相应操作操作般设备直接操作
    2设计分析
    1 设备象通文件文件调户关设备者文件等文件象指针通指针访问文件设备时系统会动访问相应设备虚拟磁盘设备时必须指定相应文件通mount命令否操作法进行文件象户态程序访问文件设备目录卷等实例户程序通文件指针访问设备文件指针操作调系统功创建文件程
    2 定义设备驱动程序入口函数函数中需完成两件事通查询注册表信息建立杯象数接着IO理器注册四分发例程完成户设备种请求成IRP包传入核部分IRP(IO请求包)包含虚拟磁盘请求需考虑异步情况步问题设备启动设备工作线
    处理IRP相应分发例程结束部分完成三项工作
    1)利IoMarkIrpPending函数通知IO理器分发例程返回状态值STATUS_PENDING表示该IRP续处理
    2)IRP放入设备维护IRP队列中
    3)通事件激发工作线程IRP进行处理
    3 硬盘驱动程序理物理硬盘创建device象时必须磁盘逻辑分区创建device象样物理硬盘会device象未更组织种关系NT名字空间里创建目录象然驱动创建磁盘象放目录象
    4 NT设备名操作系统执行时设备名称户户态程序中进行访问通DOS设备名建立符号链接样户进行访问时需提供DOS设备名操作系统操作响应NT设备名继完成相应请求
    3驱动程序工作程
    系统启动时驱动程序入口函数DriverEntry装入存调入口函数进行初始化初始化程中驱动程序完成两件事:调辅助函数FileDiskCreateDevice创建虚拟磁盘象IO理器注册程序分发例程时注册驱动程序卸载例程卸载驱动程序时卸载占资源创建磁盘设备象时创建设备工作线程完成IRP续处理实验中利该线程事件象实现虚拟磁盘读写步系统该线程中利时间象实现虚拟磁盘读写等操作间步实际该工作线程执行函数FileDiskThread
    驱动程序部函数调关系


    4驱动程序程分析
    总结步:
    1 驱动程序初始化驱动程序初始化程中已系统中创建相应数虚拟设备象(通调入口函数实现)具体数量安装驱动程序时导入注册表数决定需更改设备数时必须注册表中更改需重新启动计算机注册表系统启动时会写入创建设备象时仅磁盘创建设备象逻辑分区创建设备象便理创建目录设备象放目录
    2 虚拟磁盘设备通文件进行模拟设备象通文件象调户应程序关设备者文件等文件象指针通文件指针访问设备者文件时系统会动访问相应设备象必须建立设备象指定文件创建虚拟磁盘象mount文件户应程序开始部分进行参数分析需考虑户请求什建立删输入命令否正确程序解析程中指定虚拟磁盘文件信息存入定义OPEN_FILE_INFORMATION文件信息结构中时参数中获取目标虚拟磁盘指定win32设备名(卷标)等信息NT设备名核执行体户调时时DOS设备名两命名应设备命名空间需间建立符号链接
    3 应程序实现mount命令调首先确认卷标尚未否直接异常返回出相应信息检查前Win32设备名(盘符者卷标)否正常开获取相应设备NT设备名称驱动中创建该磁盘象时名字然利Win32函数检验述户指定Win32设备名相应NT设备名间建立符号链接检查否正常开次盘果步执行成功应利开否说明述建立符号链接操作异常户程序异常退出果程序利执行里系统中相应盘符mount命令步虚拟磁盘象发出定义控制命令IOCAL_FILE_DISK_OPEN_FILE命令行中指定虚拟磁盘文件作参数
    4 述请求传入核前IO理器会生成IRP户命令参数包含IRP中请求传入时调分发例程FileDiskDeviceControl响应述户控制命令
    需进行步处理事件读写分发例程调设备工作线程建立设备象时候创建功代码IRP_MJ_DEVICE_CONTROL处理程中定义IOCAL_FILE_DISK_OPEN_FILE控制码进行处理完成虚拟磁盘终启动调函数时传入相应IRP设备象指针该函数程:通IRP获取户指定虚拟磁盘文件名称判断虚拟磁盘类型设备时CD(光盘)进行相应设备属性设置然利文件名该文件开(果开成功指定位置创建样文件作虚拟磁盘)果开成功时设备象扩展结构中存入该文件句柄利述文件象指针进行查询根文件象提供信息相应设置设备象中标相关参数设备象扩展域中存入需信息包括代表磁盘目标文件句柄相关种虚拟磁盘属性完成该设备开工作完成安装该虚拟磁盘进行读写操作时传入磁盘句柄
    5基数结构
    (1)模拟磁盘文件信息结构 OPEN_FILE_INFORMATION
    typedef struct _OPEN_FILE_INFORMATION{
    DEVICE_TYPE DeviceType模拟磁盘类型
    BOOLEAN ReadOnly 否设置虚拟磁盘读
    LARGE_INTEGER FileSize 文件
    USHORT FileNameLength文件名长度
    UCHAR FileName[1] 文件名字符串
    }OPEN_FILE_INFORMATION
    该结构保存虚拟磁盘文件详细信息应程序中利mount命令指定文件时编程员需处理户命令组成样结构作参数传入核驱动程序会抽取信息作虚拟磁盘磁盘信息例磁盘读属性
    创建虚拟磁盘象时文件信息放入磁盘扩展信息中
    (2)设备扩展结构 DEVICE_EXTENSION
    定义磁盘信息结构保存设备细节设备编程方式
    typedef struct _DEVICE_EXTENSION
    {
    BOOLEAN media_in_device
    HANDLE file_handle文件句柄
    ANSI_STRING file_name文件名
    LARGE_INTEGER file_size文件
    BOOLEAN read_only读属性
    PSECURITY_CLIENT_CONTEXT security_client_context
    LIST_ENTRY list_head
    KSPIN_LOCK list_lock
    KEVENT request_event
    PVOID thread_pointer
    BOOLEAN terminate_thread
    } DEVICE_EXTENSION *PDEVICE_EXTENSION
    驱动程序创建虚拟磁盘象均维护样数结构实际核驱动程序中设备象维护着样数结构作保存应设备参数关设备处理通设备象访问信息
    参数解释:
    media_in_device:标志否已制订相应文件模拟磁盘文件系统设备初始化时设置false表示时没指定虚拟磁盘文件户通应程序进行mount操作时驱动程序相应操作
    file_handle:指定作虚拟磁盘文件指针磁盘进行读写操作时利指针开文件获
    file_name:作虚拟磁盘文件名
    file_size:作虚拟磁盘文件
    read_only:否读作虚拟磁盘文件开方式正虚拟磁盘具读写属性
    security_client_context:底线程安全相关数结构
    list_head:维护设备需步处理IRP队列
    list_lock:设备IRP队列进行删时旋锁锁步象
    request_event:事件执事前否新需设备处理请求达设备线程限循环方式运行次循环中会检测事件果事件出现表示相应请求送线程
    thread_pointer:保存指设备工作线程指针通指针确认该线程否处合适访问状态果异常会终止该线程相关设备工作
    terminate_thread:标记前设备工作线程否终止种求发生卸载设备时候
    6设备象创建函数
    NTSTATUS FileDiskCreateDevice (
    IN PDRIVER_OBJECT DriverObject
    IN ULONG Number
    IN DEVICE_TYPE DeviceType
    )

    函数中基数结构:
    WCHAR device_name_buffer[MAXIMUM_FILENAME_LENGTH]wchar16位unicode字符MAXIMUM_FILENAME_LENGTHntddkh中定义256
    UNICODE_STRING device_name设备名
    NTSTATUS status状态返回状态判断
    PDEVICE_OBJECT device_object设备象
    PDEVICE_EXTENSION device_extension设备扩展域指针
    HANDLE thread_handle辅助变量
    7驱动层例程
    DriverEntry例程
    NTSTATUS DriverEntry ( 驱动入口函数
    IN PDRIVER_OBJECT DriverObject 驱动器象
    IN PUNICODE_STRING RegistryPath 驱动注册表路径
    )
    FileDiskDeviceControl例程:
    NTSTATUS FileDiskDeviceControl ( 设备控制例程
    IN PDEVICE_OBJECT DeviceObject 操作设备象
    IN PIRP Irp IRP包指针
    )
    FileDiskReadWrite例程:
    NTSTATUS FileDiskReadWrite ( 读写例程
    IN PDEVICE_OBJECT DeviceObject 操作设备象
    IN PIRP Irp IRP包指针
    )
    FileDiskCreateClose分发例程
    NTSTATUS FileDiskCreateClose ( 分发例程 创建关闭
    IN PDEVICE_OBJECT DeviceObject 设备象
    IN PIRP Irp IRP包指针
    )
    UnLoad分发例程:
    VOID FileDiskUnload ( 卸载例程
    IN PDRIVER_OBJECT DriverObject 卸载设备象
    )
    FileDiskCreateDevice 例程(
    IN PDRIVER_OBJECT DriverObject
    IN ULONG Number
    IN DEVICE_TYPE DeviceType
    )
    FileDiskThread例程(
    IN PVOID Context
    )
    四运行结果
    1创建虚拟磁盘
    (1) 虚拟磁盘创建步骤
    1开命令提示符
    2进入filedisk目录
    3输入filedisk mount 0 c\temp\filediskimg 8M M
    中filedisk工程名mount命令文件虚拟磁盘连接0表示第设备象c\temp\filediskimg虚拟文件8M(设定意)虚拟磁盘文件M虚拟盘符(意设定)
    (2) 创建磁盘图示图:

    2创建虚拟光盘
    (1) 虚拟光盘创建前 图示:
    1开命令提示符
    2进入filedisk目录
    3.输入filedisk mount 1 c\temp\cdimageiso cd I
    中filedisk工程名mount命令文件虚拟磁盘连接1表示第设备象c\temp\cdimageiso虚拟文件cd表示虚拟光驱I虚拟盘符(意设定)
    (2) 创建虚拟光驱 图示:





    五心体会
    通次课程设计核编程定理解知道整虚拟驱动生成工作具体流程弥补前方面盲区时解文件系统文件系统驱动程序般原理理解文件系统驱动程序(FSD)系统中作工作机制windows操作系统更深层理解文件系统指负责存储理外部存储器文件信息机制外部存储介质存储文件信息格式种组织文件格式种文件系统格式常见文件系统格式FATNTFS
    解创建虚拟磁盘通建立文件达虚拟程虚拟磁盘操作实际文件操作创建虚拟磁盘时必须文件盒磁盘进行符号链接理删时种符号链接磁盘操作终划文件操作进行操作前必须相应文件指针获方式通开文件获时候开文件定创建文件进行判断已指定盘符连接文件进行链接否必定会出错前需加判断
    整程中觉函数特者说特重首先DirverEntry编程中常main()winmain()函数样核函数入口函数程序加载时调接着FileDiskDeviceControl()作贯穿整程序户提出求成IRP包终传导函数进行列检查根功码采取相应措施FileDiskThread创建设备象时候创建IRP需进行续处理通常指读写步程序时允许设备象进行时访问设备需设备工作线程根IRP队列采取相应处理终返回处理状态信息
    filedisk函数带参main()函数户需通输入DOS命令达操作程序目函数中做次命令行参数分析充分考虑户输入命令根输入者调相应函数者输出错误信息提示户进行重新输入
    然说次课设代码量涉方面前没遇花费量时间觉切值做程中体会思考快乐思考价值学间进行交流互动带丰厚效益仅长知识学会讨效果远远高边死学总言次课设学时明白冰山角学东西需专业知识更深解增加学信心会更加努力相信付出定会获回报困难怕坚持定够克服

    文档香网(httpswwwxiangdangnet)户传

    《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
    该内容是文档的文本内容,更好的格式请下载文档

    下载文档到电脑,查找使用更方便

    文档的实际排版效果,会与网站的显示效果略有不同!!

    需要 2 香币 [ 分享文档获得香币 ]

    下载文档

    相关文档

    操作系统进程管理实验报告

    操作系统进程管理实验报告实验一 进程管理1.实验目的:(1)加深对进程概念的理解,明确进程和程序的区别;(2)进一步认识并发执行的实质;(3)分析进程争用资源的现象,学习解决进程互斥的方法;...

    1年前   
    360    0

    大学物理实验课程设计实验报告

    大学物理实验课程设计实验报告  北方民族大学    大学物理实验(设计性实验)    实验报告   指导老师:王建明    姓    名:张国生    学    号:XX0233    学  ...

    9年前   
    724    0

    ping程序课程设计实验报告

    Windows网络程序设计课程设计 课 程 名 称 ping程序设计 姓   名 ...

    2年前   
    477    0

    Visual FoxPro 课程设计实验报告

     中国最大的商务办公文档下载基地: http://www.word98.com/ ╔---------------------------------------------...

    10年前   
    11776    0

    java课程设计实验报告样例

    分数_______嘉应学院计算机学院实验报告课程名称:面向对象程序设计课程设计(Java) 实验名称:”动物换位”程序设计 指导教师:肖振球 实验地点:_居家学习_实验时间:2020.03...

    4年前   
    868    0

    实验报告-电力电子课程设计

    掌握晶闸管仿真模型模块各参数的含义。理解晶闸管的特性。

    4年前   
    1341    0

    车辆管理系统实验报告课程设计

     成绩: 《C++程序设计实践》报告专 业: 软件工程 班 级: 学 号: 姓 ...

    10个月前   
    273    0

    操作系统实验报告C语言实现银行家算法

    实 验 报 告题 目名 称C语言实现银行家算法院 系信息科学与工程学院班 级完成时间指导老师本次实验成绩组长联系电话邮件地址组员(姓名,学号)主要任务程序算法的编写、实现、运行调...

    3年前   
    467    0

    计算机操作系统内存分配实验报告

    计算机操作系统内存分配实验报告一、实验目的熟悉主存的分配与回收。理解在不同的存储管理方式下,如何实现主存空间的分配与回收。掌握动态分区分配方式中的数据结构和分配算法及动态分区存储管理方式及其实...

    3年前   
    604    0

    操作系统课程设计银行家算法报告

    《操作系统--银行家算法》课程设计报告姓 名: 学 号: 班 级:计科班 ...

    3年前   
    618    0

    合工大页面置换算法操作系统课程设计报告

    计算机与信息学院《操作系统综合设计》报告设计题目:页面置换算法学生姓名:学 号:专业班级:计算机科学与技术班2015 年 X月一、设计题目 3二、开发环境与工具 3三、设计原理 31....

    3年前   
    556    0

    《操作系统 银行家算法》课程设计报告

    《操作系统--银行家算法》课程设计报告姓 名: 学 号: 班 级: 计科班 ...

    3年前   
    810    0

    银行家算法《操作系统》课程设计报告

    《操作系统》课程设计报告课题: 银行家算法 专业计算机科学与技术学生姓名班级计算机学号指导教师信息工程...

    3年前   
    697    0

    操作系统课程设计报告树型目录文件系统

    操作系统课程设计报告题目:树型目录文件系统 学 院 计算机学院 专 业 网络工程 年级班别 班 学 ...

    3年前   
    543    0

    哲学家进餐问题操作系统课程设计报告

    XX学院 《操作系统》课程设计报告题 目: 哲学家进餐问题 班 级: 学 号: ...

    2年前   
    776    0

    虚拟仪器课程设计实验报告

    《微机化仪器综合设计与实践》实验指导书大学机电工程学院目录实验六 基于PID算法的可控硅水温自动调节系统设计一、实验目的和要求1.掌握虚拟仪器高级语言Lab VIEW 或Lab Windows...

    4年前   
    847    0

    山东大学大二下学期操作系统实验报告

    操作系统实验报告计算机科学与技术学院 计算机科学与技术专业2012级X班 目录一、 进程控制实验 31.1 实验目的 31.2示例实验 31.2.1实验内容 31.3独立实验 41.3.1...

    3年前   
    688    0

    进程调度算法的实现计算机操作系统课程设计

    题目2 进程调度算法的实现2.1 题目的主要研究内容及预期达到的目标(1)设计进程控制块; (2)设计多个进程队列; (3)设计多个进程(≥20); (4)动态生成时间片、执行时间和优先级,...

    3年前   
    584    0

    操作系统课程设计磁盘调度算法

    操作系统课程设计磁盘调度算法目 录1 课程设计目的及要求……………………………………………………12 相关知识…………………………………………………………………13 ...

    3年前   
    547    0

    操作系统课程设计银行家算法的模拟实现

    操作系统课程设计报告专业计算机科学与技术学生姓名班级学号指导教师完成日期信息工程学院题目: 银行家算法的模拟实现 一、设计目的本课程设计是学习完“操作系统原理”课程后进...

    3年前   
    685    0

    文档贡献者

    文***享

    贡献于2023-03-22

    下载需要 2 香币 [香币充值 ]
    亲,您也可以通过 分享原创文档 来获得香币奖励!
    下载文档

    该用户的其他文档