Как удалить файл из режима ядра?

У меня есть минифильтр (режим ядра). Я хочу удалить файл с определенным путем (\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);

Но это сбой моей системы. Что-то не так с моими кодами? => исправлено (это ответ)

Спасибо!


person GSP    schedule 29.01.2015    source источник
comment
В строке отсутствует обратная косая черта, хотя я бы не ожидал, что это вызовет сбой. Почему pObjectAttribute указатель? Обычно это локальная переменная. Это драйвер минифильтра файловой системы? Я не уверен, законно ли вызывать ZwDeleteFile() в этом контексте. Также проверьте документированные требования, касающиеся IRQL и специальных APC ядра.   -  person Harry Johnston    schedule 30.01.2015
comment
Это нормально. Спасибо за вашу помощь! @ГарриДжонстон   -  person GSP    schedule 30.01.2015


Ответы (4)


Процедура ZwDeleteFile :

Процедура ZwDeleteFile удаляет указанный файл.

person Harry Johnston    schedule 29.01.2015

Обычными методами невозможно удалить файл из режима ядра, т.е. из драйвера устройства.

Такая практика или идея крайне не рекомендуется.

person Dilip Kumar    schedule 29.01.2015

Используйте функцию FltSetInformationFile(). с FileDispositionInformation классом.

person Rohan    schedule 29.01.2015
comment
Я удаляю файл из определенной строки не в файловом объекте. - person GSP; 29.01.2015

Есть много способов сделать это, как показано в мини-фильтре DeleteSample от Microsoft.

  1. Флаг FILE_DELETE_ON_CLOSE, который вы можете использовать в выбранной вами процедуре CreateFile.
  2. Установив FileDispositionInformation
  3. Также обратите внимание на недавно представленный FILE_DISPOSITION_INFORMATION_EX

После изучения образца все должно стать понятнее. Также обратите внимание, что вы можете выполнять транзакционные удаления, а также удалять файл по его идентификатору файла.

Удачи.

person Gabriel Bercea    schedule 26.01.2018