Кернельный Спай-логгер. Перехватывает ряд ф-ций и должен записывать, кто и зачем их вызывал в файл (точнее, в поток вывода, причем с минимальной задержкой). Создаю тред, который пишет в файл, а хуки, естессно срабатывают в кнтекстах, из которых вызывали функции. Как их синхронизировать так, чтобы после отработки хука, запускался цикл записи в файл в треде-логгере?
Евенты в чужих контекстах не работают, а мутексы работают, но "наоборот", т.е. останавливают "чужие" треды, пока работает "свой". А тут, как раз обратное: запускающих много, а запускаемый - один.
> Кернельный Спай-логгер. Перехватывает ряд ф-ций и должен > записывать, кто и зачем их вызывал в файл (точнее, в поток > вывода, причем с минимальной задержкой). Создаю тред, > который пишет в файл, а хуки, естессно срабатывают в > кнтекстах, из которых вызывали функции. Как их > синхронизировать так, чтобы после отработки хука, > запускался цикл записи в файл в треде-логгере? > Евенты в чужих контекстах не работают, а мутексы работают, > но "наоборот", т.е. останавливают "чужие" треды, пока > работает "свой". А тут, как раз обратное: запускающих > много, а запускаемый - один.
А семафоры не помогут?
[Win32] Синхронизация потоков в кернеле?21.08.02 14:31 Автор: cb <cb> Статус: Member
почему?
если для ожидания ты используешь KeWaitForSingleObject, а для установки события в Signaled - KeSetEvent, то все должно работать - эти ф-ии работают не HANDLE-ами объектов а с указателями на сами объекты...
во всяком случае у меня все работало...