Re: IRP_MJ_CREATE, минифильтр. Как отличить именно СОЗДАНИЕ файл
От: Alexander G Украина  
Дата: 03.01.18 09:24
Оценка:
Здравствуйте, sergey77666, Вы писали:

S>Вот такой код. Должно "лететь в лог" только создание файлов в обычном понимании.

S>Не папок.
S>И не открытие, а именно создание.
S>Но летит это всё.

Ну, ведь даже обычная CreateFile из Winapi и создаёт и открывает.
(потому что должно быть такое апи, которое и создаёт и открывает, иначе будет гонка при перезаписи файла)

И работает она и с файлам и с папками (, с симлинками, со стримами, с точками монтирования, с томами).

В FLT_PARAMETERS for IRP_MJ_CREATE union в поле Options есть такое:
* Disposition биты (создавать или открывать)
* CreateOptions биты (среди них FILE_DIRECTORY_FILE и FILE_NON_DIRECTORY_FILE)

Но есть пара нюансов:
* Disposition может разрешать и создание и открытие (вариант "октрыть, а если нет — создать", или другой "создать, а если есть — очистить и открыть")
* Может быть не задано ни FILE_DIRECTORY_FILE, ни FILE_NON_DIRECTORY_FILE

Бороться с неоднозначным Disposition можно, таки применив post-обработку, IO_STATUS_BLOCK будет содержать в поле Information значения FILE_CREATED,FILE_OPENED, FILE_OVERWRITTEN...
Русский военный корабль идёт ко дну!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.