Как удалить файл из режима ядра?
У меня есть минифильтр (режим ядра). Я хочу удалить файл с определенным путем (\Device\HarddiskVolume1\file.txt или C:\file.txt) из режима ядра
Есть ли способ сделать это?
ОБНОВЛЕНИЕ: 20150130
Я пытаюсь использовать рутину ZwDeleteFile, как сказал Гарри Джонстон. Вот мои коды:
RtlInitUnicodeString(&gRedirectFullFilePath, "\\Device\\HarddiskVolume1\\test.txt"); // This file existed
InitializeObjectAttributes(&ObjectAttribute, &gRedirectFullFilePath, OBJ_CASE_INSENSITIVE, NULL, NULL);
status = ZwDeleteFile(&ObjectAttribute);
Но это сломало мою систему. Что-то не так с моими кодами? => исправлено (это ответ)
Спасибо!
4 ответа
Подпрограмма ZwDeleteFile удаляет указанный файл.
Использование FltSetInformationFile()
функция с FileDispositionInformation
учебный класс.
Обычными способами невозможно удалить файл из режима ядра, то есть из драйвера устройства.
Такая практика или идея крайне не рекомендуется.
Есть много способов сделать это, как показано в минифильтре DeleteSample от Microsoft.
- Флаг FILE_DELETE_ON_CLOSE, который вы можете использовать в выбранной вами подпрограмме CreateFile.
- Устанавливая FileDispositionInformation
- Также обратите внимание на недавно введенный FILE_DISPOSITION_INFORMATION_EX
Все должно быть более понятно после изучения образца. Также обратите внимание, что вы можете выполнять транзакции, а также удалять файл по его идентификатору.
Удачи.