Re: IRP_MJ_READ + notepad = ... Как решить без хуков?
От: okman Беларусь https://searchinform.ru/
Дата: 09.01.18 06:03
Оценка:
Здравствуйте, sergey77666, Вы писали:

S>Есть аж несколько тем на форумах о том, что IRP_MJ_READ почему-то не работает, если файл открывать блокнотом — notepad.exe


"не работает" — это довольно расплывчатая формулировка...

Notepad (и некоторые другие программы) используют отображение файлов в память (MMF, Memory-Mapped Files).
Сначала открывается файл (CreateFile), потом создается объект-секция (CreateFileMapping), после чего отображение
(MapViewOfFile) и далее приложение работает с полученным отображением так, как с обычной памятью.
Хэндл исходного файла на тот момент может быть уже закрыт (CloseHandle), это надо учитывать.

IRP_MJ_READ при чтении из памяти будут приходить (с флагом IRP_PAGING_IO или IRP_SYNCHRONOUS_PAGING_IO),
также как и IRP_MJ_WRITE при записи. Хотя запись может быть сильно позже (можно прождать часы и дни, а
она так и не произойдет, т.к. система все еще держит буфер в памяти, не сбрасывая его на диск).

Недавно тема обсуждалась, см. здесь:

Mini-Filter, MMF и кеширование — тайны, секреты
https://rsdn.org/forum/asm/6968909.all
Автор: eight
Дата: 21.11.17
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.