Re[3]: Как лучше в драйвере-минифильтре сделать запись в фай
От: _f_b_i_  
Дата: 05.01.18 21:18
Оценка:
Здравствуйте, sergey77666, Вы писали:

S>Здравствуйте, _f_b_i_, Вы писали:


S>Таймер будет работать достаточно редко — минут 5 может, а то и 30, в это время захочется посмотреть лог, а фиг, если он открыт.

S>В данном случае проверка свой\чужой не нужна, ему пофиг на этот файл, поскольку мониторит лишь конкретные имена файлов, этого файла там не будет, а если занесут в конфиг, ну пусть будет в логе, я же не в каллбеках пишу файл, поэтому рекурсии не будет.

Вот что то мне подсказывает, что логика твоего драйвера немного "страдает", потому как несколько тем назад ты сильно переживал что *WriteFile не успеет сбросить кешированые буфера на диск, если вдруг произойдет BSOD, а теперь ты планируешь хранить в драйвере (и скорей всего в NonPagedPool) тонны событий — которые будут сбрасываться на диск раз в 5-30 минут? То есть сейчас уже не переживаем что данные потеряются? И еще там аккуратней с проверкой "белого списка" в калл-беках, кого писать а кого нет, ибо если накосячить, получишь диградацию производительности целевой системы. Драйвера они требуют более продуманного подхода, писать по аналогии как на фреймворках, где никто ни о чем не заботится, главное чтобы быстро наклепать — тут не получится.
Рассмотри вариант с рабочим сервисом который общается с драйвером через IOCTL: ждет события от драйвера и когда тот готов передать информацию в сервис, выставляет событие и передает данные в сервис по запросу IOCTL. Так у тебя и драйвер не будет занимать много NonPaged памяти для событий, так и сервис будет практически мгновенно обновлять лог файл.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.