Поделиться через


Функция DbgPrint (wdm.h)

Подпрограмма DbgPrint отправляет сообщение в отладчик ядра при применении указанных условий (см. раздел Примечания ниже).

Синтаксис

ULONG DbgPrint(
  PCSTR Format,
  ...   
);

Параметры

Format

Указывает указатель на строку формата для печати. Строка форматирования поддерживает большинство полей спецификации форматав стиле printf. Однако коды формата Юникода (%C, %S, %lc, %ls, %wc, %ws и %wZ) можно использовать только с IRQL = PASSIVE_LEVEL. Подпрограмма DbgPrint не поддерживает типы с плавающей запятой (%f, %e, %E, %g, %G, %a или %A).

...

Задает аргументы для строки формата, как в printf.

Возвращаемое значение

В случае успешного выполнения DbgPrint возвращает код NTSTATUS STATUS_SUCCESS; в противном случае возвращается соответствующий код ошибки.

Комментарии

DbgPrint и DbgPrintEx можно вызывать по адресу IRQL<=DIRQL. Однако коды формата Юникода (%C, %S, %lc, %ls, %wc, %ws и %wZ) можно использовать только в IRQL=PASSIVE_LEVEL. Кроме того, так как отладчик использует межпроцессные прерывания (IPIs) для взаимодействия с другими процессорами, вызов DbgPrint в IRQL>DIRQL может привести к взаимоблокировкам.

Только драйверы в режиме ядра могут вызывать подпрограмму DbgPrint .

DbgPrint отправляет сообщение, только если применяются определенные условия. В частности, он ведет себя как подпрограмма DbgPrintEx с компонентом DEFAULT и уровнем важности сообщения DPFLTR_INFO_LEVEL. Другими словами, следующие два вызова функций идентичны:

DbgPrint ( Format, arguments )

DbgPrintEx ( DPFLTR_DEFAULT_ID, DPFLTR_INFO_LEVEL, Format, arguments )

Дополнительные сведения о фильтрации сообщений, компонентах и уровне важности сообщений см. в разделе Чтение и фильтрация сообщений отладки.

Рекомендуется использовать DbgPrintEx вместо DbgPrint, так как это позволяет управлять условиями отправки сообщения.

Если это не является абсолютно необходимым, не следует получать строку из входных данных пользователя или другого процесса и передавать ее в DbgPrint. Если используется строка, которую вы не создали, необходимо убедиться, что это допустимая строка формата и что коды формата соответствуют списку аргументов по типу и количеству. Рекомендуется, чтобы все строки форматирования были статическими и определенными во время компиляции.

Не существует верхнего предела для размера строки format или количества аргументов. Однако при одном вызове DbgPrint будет передаваться только 512 байт информации. Существует также ограничение на размер буфера DbgPrint. Дополнительные сведения см . в разделе Буфер DbgPrint и отладчик .

Требования

Требование Значение
Целевая платформа Универсальное
Верхняя часть wdm.h (включая Wdm.h)
Библиотека NtDll.lib (пользовательский режим); NtosKrnl.lib (режим ядра)
DLL NtDll.dll (пользовательский режим); NtosKrnl.exe (режим ядра)
IRQL IRQL <= DIRQL (см. раздел Комментарии)

См. также раздел

DbgPrintEx

KdPrint

KdPrintEx