如何直接从磁盘复制锁定的文件并确保文件完好无损?

问题描述 投票:12回答:3

我正在编写的应用程序需要能够复制被锁定的文件。我们尝试使用卷影复制,虽然它成功复制了文件,但是对文件进行锁定的应用程序崩溃了,因为在我们复制文件时它无法获取锁定。

我不得不相信我唯一的选择是绕过操作系统并直接从磁盘读取。问题是如果我直接读到磁盘我不能确定文件的完整性,如果它在写入的中间,文件将处于损坏状态。

经过几个小时的搜索,我能够找到一个直接从磁盘复制文件的实用程序,并使用文件系统驱动程序在复制时缓存写入,以便确保文件处于完整状态。但是,该实用程序非常昂贵,我可能需要使用的许可证为100k +。

有没有人对如何完成我想要的事情有任何想法?

我们计划仅将系统限制为NTFS卷。

c file-io filesystems ntfs disk
3个回答
1
投票

我最终使用了由Napalm编写的名为DirectCopy的C程序。它工作得很好。

http://www.rohitab.com/discuss/topic/24252-ntfs-directcopy-method-from-napalm/


1
投票

您是否可以获取锁定它的应用程序的进程ID并在执行复制时挂起其线程?像这样的http://www.codeproject.com/KB/threads/pausep.aspx


0
投票

This对“分层驱动程序”的描述可能很有用。我对此一无所知。

此外,如果文件被锁定,那么你可以“观察”它并等待它被解锁然后快速复制吗?

© www.soinside.com 2019 - 2024. All rights reserved.