Изменить журнал для блоков в Windows (NTFS)

Я написал инструмент резервного копирования, который способен резервировать файлы и изображения томов для Windows. Чтобы определить, какие файлы были изменены, я использую журнал изменений Windows. Я уже использую функцию теневой копии для последовательной копии файлов и образов томов.

Чтобы определить, какие блоки были изменены, я использую хеши в данный момент. Это означает, что весь том должен быть прочитан один раз (потому что для того, чтобы увидеть, какой блок изменил hashи всех блоков, нужно вычислить). Резервная копия, интегрированная в Windows 7, способна создавать инкрементные объемы изображений без проверки всех блоков. Я не смог найти API для своего рода журнала изменений уровня блока.

Кто-нибудь знает, как получить доступ к этой информации? (Я готов глубоко погрузиться в внутренние части NTFS – даже чтение и parsing специальных файлов)

Я не думаю, что информация об изменении уровня блока доступна в любом месте. Скорее всего, что делает интегрированная резервная копия Windows 7, она устанавливает драйвер фильтра файловой системы, как и некоторые продукты для резервного копирования, и антивирусное программное обеспечение. Драйвер фильтра может перехватывать все вызовы файловой системы и таким образом знать, какие блоки были изменены. Если вы это сделаете, вы можете создать собственный журнал изменений, который будет работать на уровне блоков, но только для файлов, которые вас интересуют.

Мне бы очень хотелось узнать, что я здесь получу.

Когда вы говорите журнал изменений Windows, я так понимаю, вы имеете в виду NTFS USN? Это похоже на то, что резервная копия Windows 7 использует комбинацию VSC и NTFS USN для обнаружения изменений и создания дополнительных изображений, как вы уже делали.