Función DbgPrintEx (wdm.h)
La rutina DbgPrintEx envía una cadena al depurador de kernel si se cumplen las condiciones especificadas.
Sintaxis
NTSYSAPI ULONG DbgPrintEx(
[in] ULONG ComponentId,
[in] ULONG Level,
[in] PCSTR Format,
...
);
Parámetros
[in] ComponentId
Especifica el componente que llama a esta rutina. Debe ser uno de los identificadores de filtro de nombre de componente definidos en el archivo de encabezado Dpfilter.h. Para evitar mezclar la salida del controlador con la salida de los componentes de Windows, solo debe usar los siguientes valores para ComponentId:
- DPFLTR_IHVVIDEO_ID
- DPFLTR_IHVAUDIO_ID
- DPFLTR_IHVNETWORK_ID
- DPFLTR_IHVSTREAMING_ID
- DPFLTR_IHVBUS_ID
- DPFLTR_IHVDRIVER_ID
[in] Level
Especifica la gravedad del mensaje que se envía. Puede ser cualquier entero de 32 bits. Los valores entre 0 y 31 (ambos incluidos) se tratan de forma diferente a los valores entre 32 y 0xFFFFFFFF. Para obtener más información, consulte Lectura y filtrado de mensajes de depuración.
[in] Format
Especifica un puntero a la cadena de formato que se va a imprimir. La cadena Format admite la mayoría de los campos de especificación de formato de estiloprintf. Sin embargo, los códigos de formato Unicode (%C, %S, %lc, %ls, %wc, %ws y %wZ) solo se pueden usar con IRQL = PASSIVE_LEVEL. La rutina DbgPrintEx no admite ninguno de los tipos de punto flotante (%f, %e, %E, %g, %G, %a o %A).
...
Especifica argumentos para la cadena de formato, como en printf.
Valor devuelto
Si se ejecuta correctamente, DbgPrintEx devuelve el código NTSTATUS STATUS_SUCCESS; de lo contrario, devuelve el código de error adecuado.
Comentarios
Solo los controladores en modo kernel pueden llamar a la rutina DbgPrintEx .
Se puede llamar a DbgPrint y DbgPrintEx en IRQL<=DIRQL. Sin embargo, los códigos de formato Unicode (%wc y %ws) solo se pueden usar en IRQL = PASSIVE_LEVEL. Además, dado que el depurador usa interrupciones de interproceso (IP) para comunicarse con otros procesadores, llamar a DbgPrint en IRQL>DIRQL puede provocar interbloqueos.
DbgPrintEx pasa la cadena especificada al depurador de kernel o no hace nada en absoluto, en función de los valores de ComponentId, Level y las máscaras de filtro de componente correspondientes. Para obtener más información, consulte Lectura y filtrado de mensajes de depuración.
A menos que sea absolutamente necesario, no debe obtener una cadena de la entrada del usuario u otro proceso y pasarla a DbgPrintEx. Si usa una cadena que no creó, debe comprobar que se trata de una cadena de formato válida y que los códigos de formato coinciden con la lista de argumentos en tipo y cantidad. El procedimiento de codificación recomendado es que todas las cadenas de formato sean estáticas y definidas en tiempo de compilación.
No hay ningún límite superior para el tamaño de la cadena Format o el número de argumentos. Sin embargo, cualquier llamada única a DbgPrintEx solo transmitirá 512 bytes de información. También hay un límite para el tamaño del búfer dbgPrint. Consulte El búfer dbgPrint y el depurador para obtener más información.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Disponible en Microsoft Windows XP y versiones posteriores. |
Plataforma de destino | Universal |
Encabezado | wdm.h (incluya Wdm.h) |
Library | NtDll.lib (modo de usuario); NtosKrnl.lib (modo kernel) |
Archivo DLL | NtDll.dll (modo de usuario); NtosKrnl.exe (modo kernel) |
IRQL | <= DIRQL (consulte la sección Comentarios) |