File System Minifilter и хендл файла при ЗАКРЫТИИ
От: sergey77666 Марс  
Дата: 19.01.18 06:51
Оценка:
Уточнение предыдущей темы.

Сохраняю хендл к файлу в каждом IRP_MJ_WRITE. С этим все отлично. Я добавляю его в связанный список, моя функция проверяет нету ли там такого на данный момент, и пишет в лог, был ли он (то есть изменен уже существовавший) или создан новый. Там все более-менее в порядке.
Однако когда я начинаю в IRP_MJ_CLEANUP искать его в этом списке, то совпадение так и не обнаруживается.

С IRP_MJ_CLOSE — то же самое.

Какой именно хендл имелся в виду в пред-предыдущем абзаце?
Вначале было так:
pFileObject = *Data->Iopb->TargetFileObject;
...
add_to_list(..., &pFileObject)

Как и посоветовали в предыдущей теме. (И как я это понял).

Но с ним была проблема, вроде как для одного и того же открытого файла при write их получалось 2 (обнаружил, когда сделал дамп через %d) — то одно число, то другое.

А для просто FILE_OBJECT, без указателя — нет оператора ==.

Поэтому перешел на fileObject.FsContext
Больше этой проблемы не было, однако в IRP_MJ_CLOSE все равно ничего не вышло, и, собственно, в IRP_MJ_CLOSE этот FsContext просто-напросто всегда равен 0, как показал его дамп.

Что еще можно придумать?
Мне его надо именно хранить между write и close.
Отредактировано 19.01.2018 6:56 sergey77666 . Предыдущая версия . Еще …
Отредактировано 19.01.2018 6:55 sergey77666 . Предыдущая версия .
Отредактировано 19.01.2018 6:55 sergey77666 . Предыдущая версия .
Отредактировано 19.01.2018 6:52 sergey77666 . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.