阅读:2112回复:9
想在filedisk的基础上实现磁盘的可拓展,请教下这个能在磁盘驱动这层实现么
想在filedisk的基础上实现磁盘的可拓展,相当于就是 在磁盘已满时候能够进行拓展空间,不知道这个能在磁盘驱动这层实现不,大家能提示下不~~
![]() |
|
|
沙发#
发布于:2010-10-06 11:47
IRP_MJ_DEVICE_CONTROL 处理 IOCTL_DISK_GET_DRIVE_GEOMETRY 和 IOCTL_DISK_GET_LENGTH_INFO 时决定磁盘的大小。
当然,driver处理这些IOCTL时也要根据image 的大小。如果汇报的磁盘容量超过image, 操作系统就可能会访问虚拟磁盘外部的扇区。IRP_MJ_READ 和 IRP_MJ_WRITE 要是能支持对“外部“扇区的访问就相当于吧虚拟磁盘扩大了。 还要注意文件系统,磁盘是按照最开始的大小格式化的。即使磁盘变大了,可能文件系统也不会支持增加的扇区,还要重新格式化 |
|
板凳#
发布于:2010-10-06 11:23
虚拟磁盘加载时,操作系统会发IRP到driver,询问次磁盘的结构和空间大小。空间大小应该是这是决定的。
|
|
地板#
发布于:2010-09-27 19:32
回 6楼(wanghui219) 的帖子
~!~ ![]() |
|
|
禁止发言
![]() |
地下室#
发布于:2010-09-27 14:17
用户被禁言,该主题自动屏蔽! |
5楼#
发布于:2010-09-27 12:26
回 4楼(wanghui219) 的帖子
~!。。 . 刚有点事情耽误了。。。 先谢谢了哈 ~~也就是说如果是FAT 盘的话 应该能通过修改 DBR BPB实现,不过NTFS盘能这么弄么 ![]() |
|
|
禁止发言
![]() |
6楼#
发布于:2010-09-27 10:48
用户被禁言,该主题自动屏蔽! |
7楼#
发布于:2010-09-27 10:27
... .... 好像这个 8M 是由使用的时候手动决定的... ...,现在需要做的是如果 开始 决定了 大小为8M,但是如果我要写入超过 8M的东西该如何实现了... ...(我说的动态拓展就是这个意思了
![]() |
|
|
8楼#
发布于:2010-09-27 10:20
回 1楼(wanghui219) 的帖子
先谢谢了哈~~ 不过这又引发了我另外一个疑问了,就是虚拟磁盘的大小由谁决定,比如说filedisk里面由一个img文件虚拟出一个盘,那么这个盘的大小事由img文件决定还是由咱们写的驱动决定呢(如果是img文件决定的话,那岂不是这个盘没法写东西,因为img文件大小已经固定了呀),实际用filedisk的时候,我随便弄了个img文件,当时好像是生成了一个8M大小的盘.. ... 这个 大小难道是由系统决定的 最小符合单位? |
|
|
禁止发言
![]() |
9楼#
发布于:2010-09-27 09:57
用户被禁言,该主题自动屏蔽! |