FileDisk

FileDisk原理分析!

2008-03-16 12:34

FileDisk作为开源代码,在网上广为流传,是卷,磁盘方面驱动的基础代码,对于刚刚接触驱动程序开发的朋友说来,是入门的捷径!

下面我将对FileDisk的基本工作原理做个简单的介绍:

FileDisk是可以将文件虚拟为一个卷使用的驱动程序(其实不一定是文件,只要是存储介质都可以的)。Filedisk在加载的时候就会常见4个设备,当然你随便你创建几个。上层应用程序映射一个卷的时候,比如映射卷F:

那么F:就是FileDisk所创建的那4个设备其中一个的符号连接 (其中哪一个都是可以的) ,创建好这个符号连接以后,用户应用程序就可以发送IRP(IO请求)到这个设备了 (deviceFileDiskFileDisk0) ,那么怎样处理这些请求呢, (只有3种请求: READ WRITE IOCONTROL(包括自定义的iocode)) ,主要的任务就是处理读和写。针对每个设备都有一个处理IRP线程! (分发函数不直接处理IRP,而是加入队列,由处理线程处理) 。

其实原理就是这么一点东西,但是我们如果要是做其他的类似的驱动,无疑FileDisk是一个很好的教程!从FileDisk我们可以引申出很多东西!如果我们把FileDisk的文件,换成多个文件 (文件List) 那么就有点像磁盘整列的意思了! (不过显然FileDisk在其之上干活) 。

欢迎大家提问交流!!!!!!!!!!!!