移动磁盘文件,用NtFsControlFile还是用DeviceIoControl

移动磁盘文件,用NtFsControlFile还是用DeviceIoControl NT4以上的系统中,NtFsControlFile以其方便的特性成为winmm的API之一,DeviceIoControl则是更加原始的API,提供重要的驱动程序支持。 显然,如果只是搬运文件的话,NtFsControlFile是优于DeviceIoControl的,也更加安全。但是,这个函数至今并不是标准Windows API函数,也不能保证以后修改的可能。所以获得分区表、无差别的修改硬盘数据这种脏活累活,非DeviceIoControl莫属。 NtFsControlFile的用法并不是非常困难的,通过CreateFile打开文件、文件夹、磁盘卷之后,传入FSCTL_GET_VOLUME_BITMAP参数,可以得到文件系统的占用情况。传入FSCTL_MOVE_FILE就可以将一个文件的指定偏移量、指定大小转移到另一个簇中。 遗憾的是,[tc]的一个实验程序虽然成功的搬移了一个文件的一部分(使之产生了碎片),但是效率却是极为低下。[tc]将一个5763 簇(47,206,422 字节)的文件的前3000簇移动到另一处,居然花去了9秒钟,如果磁盘碎片整理程序效率都如此低下的话,那我看主要的精力大概应该花在提高搬移速度,而不是优化移动算法了。 为此,[tc]还不能为NtFsControlFile叫好。稍候再来做一个DeviceIoControl的实验,以便验证前者的效率问题。 整个 Yo2 上的相关文章:
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值