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

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


>>и скорей всего в NonPagedPool

S>См. головную тему.
S>Глобальная переменная UNICODE_STRING, каждые 5-30 мин грузится в лог и очищается. ПЛАНИРУЮ сделать так. Пока не сделал.

Здесь речь идет не о способе представления твоего буфера, а о виде памяти которая будет использоваться для хранения: PagedPool или NonPagedPool

>Так то был лог. Призванный заменить лог дебага, чтобы, во-первых, не тратить время на настройку WinDbg (да и установку вообще),

>во-вторых, меньше тормозило на слабом железе (без брекпоинтов можно жить, без лога нет и ради одного лишь этого приходится мучаться с WinDbg), в-третьих по-хорошему лог все равно нужен.

WinDbg это первое что ты должен поставить и настоять чтобы продуктивно писать и отлаживать драйвера. Можно конечно и лог писать, но продуктивность такой отладки особенно если падает в BSOD намного ниже, нежели поставить WinDbg и искать причину на месте.
И потом мучится с ним особо и не нужно, если с отладчиком студии дружишь — WinDbg можно сказать lite версия того отладчика, хотя возможностей намного больше чем у студии.

S>А здесь... Ну, в идеале бы не терять. Но как? Писать в файл прямо в фильтрах? Усложняет архитектуру (избежать рекурсии), замедляет быстродействие, особенно на HDD.


Если речь идет о дебаг логе — то можно или юзать DbgView — он умеет складировать лог в память и при BSOD вытягивать его из MEMORY.DMP при следующей загрузке.
Если все таки о логе событий которые нужно перехватывать — то я думаю вариант с сервисом был бы крайне уместен.

>>Рассмотри вариант с рабочим сервисом

S>Заказчик отверг.

Ну дело ваше конечно, просто ты ему еще такую вещь объясни: сейчас вам нужен только лог открытий/закрытий файлов. Завтра понадобится что то еще, потом еще что и еще... соответственно скорей всего поменяется формат сохранения файла или условия его сохранения на диск. Все это
может привести к неоправданному усложнению логики работы драйвера и как результат к возможным ошибкам и вылетам. А так написал легенький драйвер фильтр, который только складирует в память и выдает то что отсладировал по запросу, а сложную логику разбора, сохранения и мало ли чего еще
делает уже user-mode приложение или сервис.


>> Так у тебя и драйвер не будет занимать много NonPaged памяти для событий

S>Он ее и так не будет ее сильно много занимать.
Просто оцени количество событий и необходимой памяти на 5-30 минут держания лога в памяти выделенной драйвером.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.