Переименование файла, который будет удален в драйвере минифильтра IRP_MJ_CLEANUP preop callback
Моя цель состоит в том, чтобы перезаписать содержимое и имя файла непосредственно перед его удалением - стирать удаленные файлы.
Я пытаюсь использовать драйвер минифильтра и процедуру обратного вызова предварительной очистки, которая вызывается непосредственно перед последней операцией удаления.
До сих пор мне удавалось избавиться от дат создания / изменения / доступа и перезаписать содержимое файла непосредственно перед его удалением.
Однако я не могу изменить имя файла и информацию о владельце.
Я обнаружил, что могу переименовать файл с помощью FltSetFileInformation, но файл не удаляется должным образом во время очистки. С помощью shift + delete он удаляется, но имя файла на диске остается таким же, как и было. При обычном удалении он не будет перемещен в корзину (вероятно, потому что его нельзя переместить, теперь, когда у него новое имя).
Поток управления минифильтрами мне немного неясен. Например, если я вызываю FltWriteFile, он просто отправляет другой IRP, делает это синхронно или асинхронно.
Как я могу изменить имя файла, который я хочу удалить в IRP, чтобы он по-прежнему удалялся нижними драйверами.
1 ответ
FileDispositionInformation использовать это для удаления.
FileRenameInformation использует это для переименования, также вам необходимо выяснить, для чего вы делаете Переименование - это файл или файл в каталоге, сначала найдите имя штрафа, а затем проанализируйте его... и т. Д.
поскольку на том же томе переименование является операцией перемещения, а на другом томе - копией delete.hope, это поможет.