Минифильтр для обнаружения изменений в файле на уровне блоков или на уровне диска?

Я пытаюсь разработать драйвер минифильтра файловой системы для перехвата операций ввода-вывода и определения изменений на уровне диска, внесенных в конкретный файл. Я нашел пример кода в документе с примерами драйверов Windows https://github.com/Microsoft/Windows-driver-samples/tree/master/filesys/miniFilter/ .

Это мое требование: каждый раз, когда операция записи происходит в определенном файле, мне нужно отфильтровать его и узнать, какие изменения на уровне диска вносит в файл эта операция записи. Но я не уверен, какую операцию ввода-вывода я должен отфильтровать для своего требования. Пожалуйста, укажите мне правильное направление. Я делаю это для инкрементной резервной копии.


person Giridharan J    schedule 28.07.2016    source источник


Ответы (1)


если вас интересуют изменения на уровне диска, вам нужно искать только FLTFL_CALLBACK_DATA_IRP_OPERATION с IrpFlags и IRP_NOCACHE

person RbMm    schedule 28.07.2016
comment
Не могли бы вы быть более подробным? - person Giridharan J; 28.07.2016
comment
изменения на уровне диска никогда не выполнялись в fast-io, поэтому вам нужно искать только операции FLTFL_CALLBACK_DATA_IRP_OPERATION. тогда нужно искать флаги IRP, только если IRP_NOCACHE - будут изменения на уровне диска. поэтому вам нужно фильтровать запросы в обратном вызове PreWrite по этим двум критериям - person RbMm; 28.07.2016