阅读:1895回复:9
虚拟磁盘问题,偏移量
filedisk 使用文件来映射一个磁盘文件,但它用的是文件全部,也就是说从头开始。
我现在想在磁盘镜像文件件存放另外一段信息,这样的话我得改动filedisk.sys文件,使得有一个偏移量(我的想法)。 可是,我不是专门写驱动程序的,对驱动开发不熟悉,大家能不能告诉我,要改源码里的哪个位置,如何改,给段代码好吗?(假如我要偏移1000个字节,从1001个字节后的才是真正的磁盘镜像信息) 没办法,老板逼的,对驱动程序我是菜鸟!大家帮帮忙! |
|
最新喜欢:Leopar... |
沙发#
发布于:2003-11-17 17:59
2000下不太清楚,反正98 下是在处理 i/o 请求时,改动读写文件函数的参数。在那里还要区分 是sgd 结构还是简单的buffer 结构,改动可能不一样,但是这两个你必须都得处理!!
|
|
板凳#
发布于:2003-11-18 09:20
FileDiskThread的IRP_MJ_READ,IRP_MJ_WRITE中来修改。
|
|
|
地板#
发布于:2003-11-19 09:17
搞定了,原来只要在IRP_MJ_READ中加上
io_stack->Parameters.Read.ByteOffset.QuadPart+=1024; 在case IRP_MJ_WRITE中加上 io_stack->Parameters.Write.ByteOffset.QuadPart+=1024; 就搞定了,不过这只是我的猜测,现在虽使用正常,不过会不会当容量超过时溢出呢? 另外,如何做到动态分配空间,也就是说,虚拟出来的盘虽有8M,但实现文件并不需要8M,只在容量不够时再分配。 |
|
地下室#
发布于:2003-11-19 09:29
这个好像不大可能。
|
|
|
5楼#
发布于:2003-11-19 13:33
可能的,你看看Virtual PC就是这么做的
|
|
6楼#
发布于:2003-11-23 10:38
哈哈,偏移量的问题搞定了,动态增加容量的问题也解决了。不过,如何动态减少容量呢?
还有一个问题,当我mount一个iso文件后然后umount it,就无法使用net stop filedisk停止了,对磁盘镜像文件就不会。 还有,我mount了一个虚拟磁盘后,重启计算机就不见了,如何保持虚拟磁盘在重启机子后仍然存在。 |
|
7楼#
发布于:2003-11-24 10:26
iso文件是不能对其写的,不然会出错。写个BAT启动时候自动加载,
还有你是如何动态修改容量的??? |
|
|
8楼#
发布于:2003-11-24 15:19
iso文件是不能对其写的,不然会出错。写个BAT启动时候自动加载, 当然了,如果是iso文件,就不能使用偏移了,更别说写东东。 至于动态修改容量,骗过操作系统不就得了,当操作系统请求磁盘参数时,骗它磁盘容量(默认是镜像文件的大小),不就得了。 |
|
9楼#
发布于:2003-11-24 17:36
其实今天想了一下,动态的实现虚拟硬盘其实只要动态的实现文件的大小就可以了。
为什么iso文件不可以,只要操作系统能读些iso文件,虚拟硬盘也可以。 |
|
|