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) |