Куда драйвер "выводит", если использует printf? - PullRequest
2 голосов
/ 26 октября 2011

Если бы я создал драйвер, который, скажем, перехватывает функцию windows для открытия файла. Если в моем драйвере я скажу перехватить printf («что-то»), когда драйвер будет включен, и я открою файл, где printf отобразит текст?

Ответы [ 3 ]

5 голосов
/ 26 октября 2011

Если вы хотите вывести текст из драйвера для отладки и экспериментальных целей, используйте DbgPrintEx .Вывод можно просмотреть через Sysinternals DebugView или отладчик.

3 голосов
/ 26 октября 2011

printf записывается в поток stdout, который объявлен в stdio.h. Он открывается при первом прикосновении к одному из стандартных потоков: stdin, stdout, stderr. Стандартные потоки stdin, stdout и stderr - это макросы, которые вызывают функцию библиотеки stdio, которая открывает потоки и возвращает массив этих потоков. Определения макросов индексируют массив, чтобы получить правильный поток. Если в приложении нет консоли, вывод отправляется на «нулевое» устройство.

0 голосов
/ 13 января 2014

Вы можете просмотреть выходные данные отладки вашего драйвера (скомпилированные с отладочной конфигурацией)

с помощью утилиты DbgView или WinDbg, доступной на веб-сайте microsofts

, также для предоставления операторов печати вы можете использовать следующие функции, определенныев wdm.h

DbgPrint (...)

DbgPrintEx (...)

...