阅读:1562回复:11
大家讨论一下,做一个有创意的磁盘驱动
做一个纯粹的虚拟磁盘,磁盘的内容由应用程序组织,比如,可以来自不同的盘,网络。用户用起来是个盘,实际上数据可能在不同的地方。
例如,用户把一个文件COPY到此盘中,实际并没有COPY过来,只是用户看起来和用起来像在这个盘内了。 |
|
|
沙发#
发布于:2008-03-07 17:05
winfs
|
|
|
板凳#
发布于:2008-03-07 18:44
不愧老大,知识面就是宽啊,好像微软不做了,大家一块弄出来算了。
|
|
|
地板#
发布于:2008-03-07 21:49
filedisk改改就可以了..
|
|
地下室#
发布于:2008-03-08 00:13
LZ的设想确实接近Winfs了~
|
|
|
5楼#
发布于:2008-03-08 02:16
看了FILEDISK的代码,觉得IRP_MJ_READ前驱动做了很多工作了,已经定位了磁盘(映像文件)的位置了,难道我们还要给他反算回来,就是反算回具体文件的读取位置?如果我理解那样,就真要研究磁盘结构了
![]() |
|
|
6楼#
发布于:2008-03-08 10:26
这个创意不错
|
|
|
7楼#
发布于:2008-03-08 12:17
楼主的想法,我也想过,用FileDisk修改的方法我也想过:
FileDisk现在是打开一个文件句柄作为修数据的物理位置, 现在我们无非是要维护多个HANDLE,就是以个句柄数组, 对于这个HANDLE数组,每个HANDLE我们固定的表示一个物理介质(文件,磁盘,分区等) 那么这些物理介质实际上就有序的虚拟成了一个大的卷!(我们应该把相关信息,有序的存在注册表上) 那么真正修数据的时候,如果数据的长度是跨物理介质的,那么就要把数据分成多段从不同的物理介质上去读取(或者是写)了! 另外就是DEVICEIOCONTROL查询的信息,就有点不好说了,反正我觉得是不能如实的反应了,比如有512B的扇区,也有4096B的扇区。那么就只能按照我们自己的规则返回给应用程序就好了。 |
|
8楼#
发布于:2008-03-08 12:26
能在上面跑操作系统就更好了~
|
|
|
9楼#
发布于:2008-03-09 00:52
to killvxk,写文件没问题,安装程序也没问题吧。跑系统要在启动前做工作了,没有了解。
to tonyfirst1 能在IRP_MJ_READ前作拦截就好了。 |
|
|
10楼#
发布于:2008-03-14 20:46
基本上就是网络盘。
|
|
|
11楼#
发布于:2008-03-27 16:14
修改FileDisk的方法我实现过,可以把多个文件组合虚拟成一个大磁盘(试过本地文件,没试过网络文件)。至于你说的扇区大小,虚拟成一个盘后格式化,扇区大小固定的了。
lz说的copy一个文件过来,看起来在磁盘中,实际不在。我觉得这应该属于文件系统的驱动,磁盘驱动就没有文件的概念。 引用第7楼tonyfirst1于2008-03-08 12:17发表的 : |
|