网站大量收购闲置独家精品文档,联系QQ:2885784924

虚拟磁盘的设计跟操作.doc

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
虚拟磁盘的设计跟操作

虚拟磁盘的设计与操作 ——李季季 摘要: 通常情况下是在磁盘上建立文件系统即硬盘分区,文件系统驱动程序(FSD)已经实现了在硬盘上创建和管理文件,本系统主要实现将一个文件虚拟成一个相应的磁盘,在文件系统驱动程序的基础之上,实现基于虚拟设备的文件系统,这种虚拟技术得到了很多应用,例如虚拟光驱就是其中之一,我们将对磁盘进行相关的操作。 关键字: 函数 加载模块 读写操作 卸载模块 格式化 一.整体功能概述: 通过命令行输入/mount的加载相应虚拟磁盘的命令,执行完毕后便可以在“我的电脑”中看到又多出了与命令行输入相应的盘符,通过format将磁盘格式化或通过右键选择格式化成相应格式后,便可以对它操作。 通过命令行输入/mount的加载相应虚拟磁盘的命令,执行完后便可以在“我的电脑”中看到又多出了一个虚拟的磁盘,便可以对它执行读写操作。 在命令行下输入/umount的卸载相应虚拟磁盘的命令,执行完后便可以卸载除刚才加载的虚拟磁盘。 二.设计的描述: 通常情况下是在磁盘上建立文件系统即硬盘分区,文件系统驱动程序(FSD)已经实现了在硬盘上创建和管理文件,本系统主要实现将一个文件虚拟成一个相应的磁盘,在文件系统驱动程序的基础之上,实现基于虚拟设备的文件系统,这种虚拟技术得到了很多应用,例如虚拟光驱就是其中之一。虚拟磁盘文件系统经过安装可以模拟真实的硬盘,支持各种文件系统功能。 三.基本的数据结构 (1)全局变量dir_handle HANDLE dir_handle; 该全局变量用于指向一个“目录对象”,存放本驱动程序创建的所有的磁盘对象。 (2)模拟磁盘文件信息结构 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命令制定这个文件时,会将文件的信息组成这样一个结构后作为参数传入内核。驱动程序会抽取这些信息,并把它们作为虚拟磁盘的磁盘信息,例如磁盘的大小好只读属性。 (3)设备扩展结构 DEVICE_EXTENSION: 自定义的磁盘信息结构,用来保存设备的细节以及对设备的编程方式。 Typedef struct _DEVICE_EXTESION { 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; 本驱动程序所创建的虚拟对象均为自己维护这样一个数据结构。实际上,所有内核驱动程序中的设备对象都维护这样一个数据结构。其主要作用就是在此保存对应设备的一些参数,使得所有有关此设备的处理都可以通过设备对象访问到这些信息。 相关函数介绍 (1)入口函数 DirverEntry DirverEntry( IN PDRIVER_OBJECT DriverObject, IN

文档评论(0)

karin + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档