是否可以检索 ReFS 为完整性流创建的校验和/哈希?我发现this文档描述了一个新的API控制代码:FSCTL_GET_INTEGRITY_INFORMATION,但它似乎只获取有关完整性流的一些详细信息,例如校验和类型和块大小,而不是校验和本身。
我对这些信息感兴趣,因为我正在编写一个程序,需要比文件名和时间戳更可靠地识别文件更改,并且我不想重新执行文件系统已经存在的所有校验和正在做,特别是因为我正在处理数 TB 的数据。
我认为您不应该直接访问校验和。文件中每个 64 KB 簇都有一个 CRC64 校验和(对于大文件,您可能会得到大量的校验和)。据我所知,它们以“私有”方式存储在文件系统中,没有 API 访问权限。据我所知2012R2的二进制格式,没有ADS来访问校验和,你必须挖掘分区。
对于最初关心的问题,您可能对 FILE_ATTRIBUTE_NO_SCRUB_DATA 感兴趣。其目的是“当应用程序开发人员希望更严格地控制何时以及如何清理这些文件时,此属性对于那些维护自己的完整性信息的应用程序很有用。”。这很接近你想要的。