如何在同一文件的两个版本之间查找块级别或磁盘级别更改?

时间:2016-07-27 05:48:48

标签: c# c++ windows file filesystems

我正在为Windows操作系统开发备份应用程序。首先,我进行完整备份并将整个文件复制到备份媒体。接下来,在进行增量备份时,我只需要查找在上一次完全备份之后对文件所做的更改。为此,我需要确定同一文件的两个版本之间的块级别或磁盘级别更改。我查看了FileSystemWatcher https://msdn.microsoft.com/en-us/library/system.io.filesystemwatcher.aspx类,但它只在更改完成后通知我。它没有为我提供文件的块级更改。有没有其他方法可以实现这个目标?

1 个答案:

答案 0 :(得分:0)

您需要在它们发生之前以及成功执行结果之后立即跟踪所有写入操作(进入文件系统的IRP)。这是在文件系统过滤器驱动程序的帮助下完成的。您可以在C中自己创建一个,也可以使用我们的CallbackFilter产品,其中包括用于.NET,C ++和Delphi的驱动程序和用户模式API。