Função DbgPrint (wdm.h)

A rotina DbgPrint envia uma mensagem para o depurador de kernel quando as condições especificadas se aplicam (consulte a seção Comentários abaixo).

Sintaxe

ULONG DbgPrint(
  PCSTR Format,
  ...   
);

Parâmetros

Format

Especifica um ponteiro para a cadeia de caracteres de formato a ser impressa. A cadeia de caracteres Format dá suporte à maioria dos campos de especificação de formato de estilo printf. No entanto, os códigos de formato Unicode (%C, %S, %lc, %ls, %wc, %ws e %wZ) só podem ser usados com IRQL = PASSIVE_LEVEL. A rotina DbgPrint não dá suporte a nenhum dos tipos de ponto flutuante (%f, %e, %E, %g, %G, %a ou %A).

...

Especifica argumentos para a cadeia de caracteres de formato, como em printf.

Retornar valor

Se tiver êxito, DbgPrint retornará o código NTSTATUS STATUS_SUCCESS; caso contrário, retornará o código de erro apropriado.

Comentários

DbgPrint e DbgPrintEx podem ser chamados em IRQL<=DIRQL. No entanto, os códigos de formato Unicode (%C, %S, %lc, %ls, %wc, %ws e %wZ) só podem ser usados em IRQL=PASSIVE_LEVEL. Além disso, como o depurador usa IPIs (interrupções entre processos) para se comunicar com outros processadores, chamar DbgPrint no IRQL>DIRQL pode causar deadlocks.

Somente drivers de modo kernel podem chamar a rotina DbgPrint .

O DbgPrint enviará uma mensagem somente se determinadas condições se aplicarem. Especificamente, ele se comporta como a rotina DbgPrintEx com o componente DEFAULT e um nível de importância de mensagem de DPFLTR_INFO_LEVEL. Em outras palavras, as duas chamadas de função a seguir são idênticas:

DbgPrint ( Format, arguments )

DbgPrintEx ( DPFLTR_DEFAULT_ID, DPFLTR_INFO_LEVEL, Format, arguments )

Para obter mais informações sobre filtragem de mensagens, componentes e nível de importância da mensagem, consulte Leitura e filtragem de mensagens de depuração.

É recomendável que você use DbgPrintEx em vez de DbgPrint, pois isso permite controlar as condições sob as quais a mensagem é enviada.

A menos que seja absolutamente necessário, você não deve obter uma cadeia de caracteres da entrada do usuário ou de outro processo e passá-la para DbgPrint. Se você usar uma cadeia de caracteres que não criou, deverá verificar se essa é uma cadeia de caracteres de formato válida e se os códigos de formato correspondem à lista de argumentos no tipo e na quantidade. A melhor prática de codificação é que todas as cadeias de caracteres de formato sejam estáticas e definidas em tempo de compilação.

Não há limite superior para o tamanho da cadeia de caracteres Format ou o número de argumentos. No entanto, qualquer chamada única para DbgPrint transmitirá apenas 512 bytes de informações. Também há um limite para o tamanho do buffer DbgPrint. Consulte Buffer DbgPrint e o Depurador para obter detalhes.

Requisitos

Requisito Valor
Plataforma de Destino Universal
Cabeçalho wdm.h (include Wdm.h)
Biblioteca NtDll.lib (modo de usuário); NtosKrnl.lib (modo kernel)
DLL NtDll.dll (modo de usuário); NtosKrnl.exe (modo kernel)
IRQL IRQL <= DIRQL (consulte a seção Comentários)

Confira também

DbgPrintEx

KdPrint

KdPrintEx