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

How to find block level or disk level changes between two versions of the same file?

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

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