смотрел только что его драйвер в идке, и возник одни вопрос, по поводу используемых там методов коммуникации между kernel mode и user mode: драйвер перехватывает отладочную инфу, пишет её в структуры, для которых выделяет память... usermode-часть несколько раз в секунду посылет драйверу запросы ввода-вывода, а тот в свою очередь отдаёт в ответе на него собраную инфу, и освобождает занятую ею память. ну и собсно, сам вопрос: почему именно так? не проще было бы использовать named pipes? ведь в случае, если инициатором связи должен выступать драйвер, это было бы какраз то что нужно, да и в плане кода намного проще...
Cr4sh Так сложилось исторически. "инициатором связи" на самом деле выступает приложение. Так как оно или зачитывает даные с драйвера, или просто игнорирует его. "методов коммуникации между kernel mode и user mode" может быть много. Но для утилит типа regmon/filemon/dbgview/... вполне подходит схема таймер-DeviceIoControl. Драйвер пасивный - он лишь устанавливает/снимает хуки, фильтры и пишет инфу в собственный лог-буффер.