Re[7]: Как синхронизировать PFLT_POST_OPERATION_CALLBACK и п
От: okman Беларусь https://searchinform.ru/
Дата: 16.09.18 17:44
Оценка:
Здравствуйте, LimyKurn, Вы писали:

LK>Спасибо за verifier, а вот по синхронизации надо либо что-то делать, либо все-таки счесть данную архитектуру чем-то ужасным


Если задача заключается в том, чтобы собирать какие-то данные на post operation callback и записывать в файл,
то вряд ли есть что-то лучше, чем отдельный поток, который это делает. Не вижу резона гонять эти данные в user mode и
писать в файл оттуда, это никаких выгод не даст, получится только лишнее усложнение на ровном месте.

Очередь можно сделать на базе linked list и засинхронизировать доступ к ней, как я уже писал, через спинлоки.
Рабочий поток будет ждать (KeWaitForXxx) на событии и при его сигналинге выгребать данные из очереди и сбрасывать их на диск.
То же самое делать можно и по таймауту (например, когда KeWaitForXxx вернула STATUS_TIMEOUT).

LK>А если перенести логирование в минифильтры, то это гемор поменьше, но придется его оптимизировать по быстродействию, что ли, к тому же логирование создает файл — от рекурсии защищаться придется).


Там рекурсии неоткуда возникнуть.

LK>Но и спинлоки как вариант "что-то делать" — не нравятся.


Почему?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.