API отладчика ядра Windows? ... доступ к строкам - PullRequest
1 голос
/ 21 апреля 2010

Как вы можете прочитать строки отладчика ядра Windows, сгенерированные при вызове функций kdPrint или debugPrint?

Особенно чтение в пользовательском режиме, но в режиме ядра это тоже хорошо!

Это то же самое, что и DebugView, но я хочу фильтровать и работать только с определенными сообщениями (строками), передаваемыми отладчику.

1 Ответ

1 голос
/ 21 апреля 2010

В режиме пользователя у вас есть DBWIN" API ":

  1. Создать именованную («DBWIN_BUFFER») область разделяемой памяти (4096 байт, первый DWORD - это идентификатор процесса) и два события
  2. Сигнализировать DBWIN_BUFFER_READY именованное событие
  3. Дождаться DBWIN_DATA_READY именованного события
  4. Считывание общей памяти (и переход к шагу № 2 для получения следующего вывода)

В режиме ядра на NT6 у вас есть DbgSetDebugPrintCallback

Для более старых вещей вам нужно сделать что-то вроде перехвата (int 0x2d / DebugService). Лучшее место для получения дополнительной информации об этом, вероятно, группа новостей OSR .

Редактировать: В Vista и более поздних версиях вам нужно установить запись реестра Debug Print Filter , чтобы включить выходные сообщения отладки из DbgPrint [Ex] (для KdPrint необходим отладчик ядра IIRC)

...