wuqiu
驱动牛犊
驱动牛犊
  • 注册日期2003-04-24
  • 最后登录2007-09-16
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
阅读:1895回复:9

虚拟磁盘问题,偏移量

楼主#
更多 发布于:2003-11-17 17:45
filedisk 使用文件来映射一个磁盘文件,但它用的是文件全部,也就是说从头开始。

我现在想在磁盘镜像文件件存放另外一段信息,这样的话我得改动filedisk.sys文件,使得有一个偏移量(我的想法)。

可是,我不是专门写驱动程序的,对驱动开发不熟悉,大家能不能告诉我,要改源码里的哪个位置,如何改,给段代码好吗?(假如我要偏移1000个字节,从1001个字节后的才是真正的磁盘镜像信息)

没办法,老板逼的,对驱动程序我是菜鸟!大家帮帮忙!

最新喜欢:

LeopardLeopar...
haosheng
驱动牛犊
驱动牛犊
  • 注册日期2003-10-22
  • 最后登录2011-02-17
  • 粉丝1
  • 关注1
  • 积分5分
  • 威望21点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-11-17 17:59
2000下不太清楚,反正98 下是在处理 i/o 请求时,改动读写文件函数的参数。在那里还要区分 是sgd 结构还是简单的buffer 结构,改动可能不一样,但是这两个你必须都得处理!!
nustzhua
驱动中牛
驱动中牛
  • 注册日期2002-06-19
  • 最后登录2015-09-27
  • 粉丝0
  • 关注0
  • 积分18分
  • 威望2点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-11-18 09:20
FileDiskThread的IRP_MJ_READ,IRP_MJ_WRITE中来修改。
不限容量的免费邮箱 www.k65.net
wuqiu
驱动牛犊
驱动牛犊
  • 注册日期2003-04-24
  • 最后登录2007-09-16
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
地板#
发布于: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,只在容量不够时再分配。
 
nustzhua
驱动中牛
驱动中牛
  • 注册日期2002-06-19
  • 最后登录2015-09-27
  • 粉丝0
  • 关注0
  • 积分18分
  • 威望2点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-11-19 09:29
这个好像不大可能。
不限容量的免费邮箱 www.k65.net
else
驱动小牛
驱动小牛
  • 注册日期2002-10-21
  • 最后登录2004-06-12
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-11-19 13:33
可能的,你看看Virtual PC就是这么做的
wuqiu
驱动牛犊
驱动牛犊
  • 注册日期2003-04-24
  • 最后登录2007-09-16
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-11-23 10:38
哈哈,偏移量的问题搞定了,动态增加容量的问题也解决了。不过,如何动态减少容量呢?

还有一个问题,当我mount一个iso文件后然后umount it,就无法使用net stop filedisk停止了,对磁盘镜像文件就不会。

还有,我mount了一个虚拟磁盘后,重启计算机就不见了,如何保持虚拟磁盘在重启机子后仍然存在。

wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
7楼#
发布于:2003-11-24 10:26
iso文件是不能对其写的,不然会出错。写个BAT启动时候自动加载,
还有你是如何动态修改容量的???
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
wuqiu
驱动牛犊
驱动牛犊
  • 注册日期2003-04-24
  • 最后登录2007-09-16
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2003-11-24 15:19
iso文件是不能对其写的,不然会出错。写个BAT启动时候自动加载,
还有你是如何动态修改容量的???


当然了,如果是iso文件,就不能使用偏移了,更别说写东东。
至于动态修改容量,骗过操作系统不就得了,当操作系统请求磁盘参数时,骗它磁盘容量(默认是镜像文件的大小),不就得了。
nustzhua
驱动中牛
驱动中牛
  • 注册日期2002-06-19
  • 最后登录2015-09-27
  • 粉丝0
  • 关注0
  • 积分18分
  • 威望2点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2003-11-24 17:36
其实今天想了一下,动态的实现虚拟硬盘其实只要动态的实现文件的大小就可以了。
为什么iso文件不可以,只要操作系统能读些iso文件,虚拟硬盘也可以。
不限容量的免费邮箱 www.k65.net
游客

返回顶部