Здравствуйте! Реализвал файловый фильтр. За основу взят sfilter. Отслеживаю создание файлов - все работает, Disposition = FILE_CREATE. Но отследить создание папки не получается. Беру проводник, создаю папку, мне приходит несколько соответствующих IRP_MJ_CREATE, но у них у всех Disposition = FILE_OPEN. FileMon показывает тоже самое: "Options: Open Access: All". Как же отследить именно создание папки? Что не так делаю?
експлорер создает сначала что-то типа "New folder" а потом его ренеймит наверное поэтому ты и не ловишь при создании FILE_CREATED приходит 100% - и на фолдер и на файло
Русская винда, к примеру, сразу создает каталог "Новая папка" и ни чего потом не переименовывает. Так что должно ловиться...
Столкнулся с аналогичной проблемой... в FAT32 работает а в NTFS не хочет. Может кто знает по каким флагам, приметам определить моздание папки в NTFS
Marik IrpSp->Parameters.Create.Options & FILE_DIRECTORY_FILE есть одна тонкость - при создании директория этот флажок стоит всегда а вот при открытии - может стоять, может нет, он похоже ваще не учитывается фильтрам этот пофигизм и неаккуратность здорово мешает жыть
z0mailbox Спасибо за подсказку на направление Флаг FILE_DIRECTORY_FILE опеределен как 00000001h, но он почти во всех IRP установлен ((( А вот флаг 2000000h как раз то что нужно!!! по крайней мере при отлавливании IRP с таким флагом я добился того чего хотел. А вот что это за флаг для меня так и осталось загадкой, если кто знает просветите в теорию. ЗЫ: по количеству нулей я не опечатался, не FILE_OPEN_REPARSE_POINT (200000h), а именно 2000000h!
Marik я с децтва щитал что это FILE_CREATE в Disposition цытата: IrpSp->Parameters.Create.Options Bitmask of flags that specify the options to be applied when creating or opening the file, as well as the action to be taken if the file already exists. The high 8 bits of this parameter correspond to the Disposition parameter The low 24 bits of this member correspond to the CreateOptions parameter ты меня запутал я думал ты пытаешься отличить директорию от файла, а не создание от открытия