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

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

ID:50246827

大小:82.00 KB

页数:22页

时间:2020-03-07

虚拟磁盘的设计与操作.doc_第1页
虚拟磁盘的设计与操作.doc_第2页
虚拟磁盘的设计与操作.doc_第3页
虚拟磁盘的设计与操作.doc_第4页
虚拟磁盘的设计与操作.doc_第5页
资源描述:

《虚拟磁盘的设计与操作.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、虚拟磁盘的设计与操作——李季季摘要:通常情况下是在磁盘上建立文件系统即硬盘分区,文件系统驱动程序(FSD)已经实现了在硬盘上创建和管理文件,本系统主要实现将一个文件虚拟成一个相应的磁盘,在文件系统驱动程序的基础之上,实现基于虚拟设备的文件系统,这种虚拟技术得到了很多应用,例如虚拟光驱就是其中之一,我们将对磁盘进行相关的操作。关键字:函数加载模块读写操作卸载模块格式化一.整体功能概述:1.通过命令行输入/mount的加载相应虚拟磁盘的命令,执行完毕后便可以在“我的电脑”中看到又多出了与命令行输入相应的盘符,通过format将磁盘格式

2、化或通过右键选择格式化成相应格式后,便可以对它操作。22/221.通过命令行输入/mount的加载相应虚拟磁盘的命令,执行完后便可以在“我的电脑”中看到又多出了一个虚拟的磁盘,便可以对它执行读写操作。2.在命令行下输入/umount的卸载相应虚拟磁盘的命令,执行完后便可以卸载除刚才加载的虚拟磁盘。二.设计的描述:通常情况下是在磁盘上建立文件系统即硬盘分区,文件系统驱动程序(FSD)已经实现了在硬盘上创建和管理文件,本系统主要实现将一个文件虚拟成一个相应的磁盘,在文件系统驱动程序的基础之上,实现基于虚拟设备的文件系统,这种虚拟技术得

3、到了很多应用,例如虚拟光驱就是其中之一。虚拟磁盘文件系统经过安装可以模拟真实的硬盘,支持各种文件系统功能。三.基本的数据结构(1)全局变量dir_handle22/22HANDLEdir_handle;该全局变量用于指向一个“目录对象”,存放本驱动程序创建的所有的磁盘对象。(2)模拟磁盘文件信息结构OPEN_FILE_INFORMATIONtypedefstruct_OPEN_FILE_INFORMATION{DEVICE_TYPEDeviceType;//所模拟的磁盘的类型BOOLEANReadOnly;//是否设置虚拟磁盘为只

4、读LARGE_INTEGERFileSize;//本文件的大小USHORTFileNameLength;//文件名的长度UCHARFileName[1];//文件名字符串}OPEN_FILE_INFORMATION;该结构保存了用于虚拟磁盘的文件的详细信息。在应用程序利用mount命令制定这个文件时,会将文件的信息组成这样一个结构后作为参数传入内核。驱动程序会抽取这些信息,并把它们作为虚拟磁盘的磁盘信息,例如磁盘的大小好只读属性。(3)设备扩展结构DEVICE_EXTENSION:自定义的磁盘信息结构,用来保存设备的细节以及对设备

5、的编程方式。Typedefstruct_DEVICE_EXTESION{22/22BOOLEANmedia_in_device;HANDLEfile_handle;//文件句柄ANSI_STRINGfile_name;//文件名LARGE_INTEGERfile_size;//文件的大小BOOLEANread_only;//只读属性PSECURITY_CLIENT_CONTEXTsecurity_client_context;LIST_ENTRYlist_head;KSPIN_LOCKlist_lock;KEVENTrequest

6、_event;PVOIDthread_pointer;BOOLEANterminate_thread;}DEVICE_EXTENSION,*PDEVICE_EXTENSION;本驱动程序所创建的虚拟对象均为自己维护这样一个数据结构。实际上,所有内核驱动程序中的设备对象都维护这样一个数据结构。其主要作用就是在此保存对应设备的一些参数,使得所有有关此设备的处理都可以通过设备对象访问到这些信息。相关函数介绍22/22(1)入口函数DirverEntryDirverEntry(INPDRIVER_OBJECTDriverObject,IN

7、PUNICODE_STRINGRegisterPath)该函数主要实现建立相应个数的磁盘对象和向I/O管理器注册4个分发例程以处理来自应用程序的相应请求。(2)分发例程FileDiskCreateCloseFileDiskCreateClose(INPDEVICE_OBJECTDriverObject,INPIRPIrp)在这个函数中相应打开文件和关闭文件对象的请求,对应主功能代码IRP_MJ_CREATE和IPR_MJ_CLOSE。在函数中就是简单的返回打开成功的标记,不需要完成额外的工作。(3)分发例程FileDiskRead

8、WriteFileDiskReadWrite(INPDEVICE_OBJECTDeviceObject,INPIRPIrp22/22)这个函数完成对虚拟磁盘的读写,对应于主功能代码IRP_MJ_WRITE和IRP_MJ_READ。在进行读写之前先确

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。