Здравствуйте, 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...