编程刷新卷信息的问题

Areslee 2009-07-07 11:12:04
请问在修改了卷数据之后,如何编程刷新卷信息?
比如:格式化一个卷,然后用WINHEX把备份的数据写回,此时访问卷就得不到文件信息,需要在磁盘管理器里删掉盘符再重建才能正常访问

请问如何编程实现磁盘管理器的功能?
...全文
37 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
cnzdgs 2009-07-15
  • 打赏
  • 举报
回复
你是要实现磁盘管理器的删除和添加盘符功能吗?可以用DeleteVolumeMountPoint、SetVolumeMountPoint等函数。
Areslee 2009-07-14
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 cnzdgs 的回复:]
引用 6 楼 Areslee 的回复:
引用 1 楼 cnzdgs 的回复:
用DeviceIoControl,修改之前FSCTL_LOCK_VOLUME,修改完后FSCTL_DISMOUNT_VOLUME。注意,如果卷正在被使用,Lock会失败。


不行,这样的话内存里的数据会和磁盘里的不匹配


我做过这样的程序,只要Lock成功,是不会有问题的,你可以看一下MSDN中FSCTL_DISMOUNT_VOLUME说明下面的Remarks部分。
[/Quote]
如果是需要用第三方软件修改数据呢?
目标是这个:
某访问过的卷,FS驱动会CACHE数据
用磁盘管理器删盘符建盘符之后,CACHE的数据写回磁盘
此时用第三方软件直接修改磁盘文件系统相关内容
然后再用磁盘管理器删/建盘符,然后FS驱动会认修改过的内容


如何编程实现此过程中磁盘管理器做的工作?
cnzdgs 2009-07-12
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 Areslee 的回复:]
引用 1 楼 cnzdgs 的回复:
用DeviceIoControl,修改之前FSCTL_LOCK_VOLUME,修改完后FSCTL_DISMOUNT_VOLUME。注意,如果卷正在被使用,Lock会失败。


不行,这样的话内存里的数据会和磁盘里的不匹配
[/Quote]
我做过这样的程序,只要Lock成功,是不会有问题的,你可以看一下MSDN中FSCTL_DISMOUNT_VOLUME说明下面的Remarks部分。
Areslee 2009-07-12
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 cnzdgs 的回复:]
用DeviceIoControl,修改之前FSCTL_LOCK_VOLUME,修改完后FSCTL_DISMOUNT_VOLUME。注意,如果卷正在被使用,Lock会失败。
[/Quote]
不行,这样的话内存里的数据会和磁盘里的不匹配
Areslee 2009-07-10
  • 打赏
  • 举报
回复
不用,就在应用层就行
bobo_2003 2009-07-10
  • 打赏
  • 举报
回复
学习
wangk 2009-07-10
  • 打赏
  • 举报
回复
仅供参考:
http://www.cnitblog.com/wangk/archive/2009/07/03/6106.html
ZOthello 2009-07-07
  • 打赏
  • 举报
回复
是不是要在驱动实现?
cnzdgs 2009-07-07
  • 打赏
  • 举报
回复
用DeviceIoControl,修改之前FSCTL_LOCK_VOLUME,修改完后FSCTL_DISMOUNT_VOLUME。注意,如果卷正在被使用,Lock会失败。

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧