Информация об изменениях

Сообщение File System Minifilter и хендл файла при ЗАКРЫТИИ от 19.01.2018 6:51

Изменено 19.01.2018 6:55 sergey77666

File System Minifilter и хендл файла при ЗАКРЫТИИ
Уточнение предыдущей темы.

Сохраняю хендл к файлу в каждом 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.
File System Minifilter и хендл файла при ЗАКРЫТИИ
Уточнение предыдущей темы.

Сохраняю хендл к файлу в каждом 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.