Re: File System Minifilter и хендл файла при ЗАКРЫТИИ
От: okman Беларусь https://searchinform.ru/
Дата: 19.01.18 08:28
Оценка:
Здравствуйте, sergey77666, Вы писали:

S>Вначале было так:

S>
S>pFileObject = *Data->Iopb->TargetFileObject;
S>...
S>add_to_list(..., &pFileObject)
S>

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

А зачем ты разыменовываешь TargetFileObject? Это ошибка.
Здесь нужно работать не со структурами FILE_OBJECT, а с указателями на них.
И, например, при поиске в списке сравнивать указатели, а не структуры. Тогда все будет работать.
Каждому открытому хэндлу (HANDLE) обычно соответствует один указатель на FILE_OBJECT.

Короче, в терминологии языка C++ правильно так:
std::list<FILE_OBJECT *> myList;
но не так:
std::list<FILE_OBJECT> myList;

Когда тебе приходит IRP_MJ_WRITE — сохраняй указатель (именно указатель, а не копию структуры!) на FILE_OBJECT,
взятый из Data->Iopb->TargetFileObject в своем списке. Когда придет IRP_MJ_CLEANUP — ищешь этот указатель в
списке. И т.д.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.