Как просмотреть сообщения DbgPrint из минифильтра файловой системы Windows?

Я пытаюсь запустить один из образцов минифильтров от Microsoft, представленный здесь: https://github.com/Microsoft/Windows-driver-samples/tree/master/filesys/miniFilter/passThrough

Я не знаю, что должен делать этот минифильтр (документация не очень хорошая), но для начала, если я смогу просто увидеть вывод из DbgPrint() Скажите, я буду счастлив. Запустив Sysinternals DebugView от имени администратора, я сделал fltmc load passthrough а также fltmc unload passthrough, но не увидел никакого вывода из фильтра. Я знаю, что, по крайней мере, функция, соответствующая функции выгрузки в коде, имеет DbgPrint() сообщение:

PT_DBG_PRINT( PTDBG_TRACE_ROUTINES,
("PassThrough!PtUnload: Entered\n") );

Я должен видеть эти сообщения? Если так, то как? Если нет, то как я могу отладить разработку минифильтра?

PS: я определил ключ реестра, предложенный здесь: https://www.danclarke.com/debugview

2 ответа

Вы можете сделать это из прикрепленного отладчика, используя:

ed nt!Kd_DEFAULT_Mask 0x8

Или проверьте эту ссылку, так как вы также можете включить ее из реестра.

Посмотрите макросы PT_DBG_PRINT в исходном коде:

#define PT_DBG_PRINT( _dbgLevel, _string )          \
(FlagOn(gTraceFlags,(_dbgLevel)) ?              \
    DbgPrint _string :                          \
    ((int)0))

Есть условие, которое проверяет переменную gTraceFlags. По умолчанию gTraceFlags равен 0. Так что просто установите эту переменную для включения DbgPrint, например:

ULONG gTraceFlags = PTDBG_TRACE_ROUTINES;

Убедитесь, что вы включили "Захват ядра" в раскрывающемся меню "Захват" вместо "Захватить глобальный Win32", о котором упоминается в статье, на которую вы ссылались.

Что касается примера драйвера устройства мини-фильтра File-System, с которым вы связали нас, то есть много документации по разработке драйверов диспетчера фильтров, доступных на MSDN.

Если вы зайдете в разработку драйверов вслепую с примерами Microsoft, вы вряд ли сможете понять, как все это работает одним щелчком пальца... Это очень отличается от разработки в пользовательском режиме, вы начнете с снова дно.

Другие вопросы по тегам