Compartir a través de


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, debe usar solo 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 de admite la mayoría de los campos de especificación de formato printf-style . Sin embargo, los códigos de formato Unicode (%C, %S, %lc, %ls, %wc, %wsy %wZ) solo se pueden usar con IRQL = PASSIVE_LEVEL. La rutina de dbgPrintEx de no admite ninguno de los tipos de punto flotante (%f, %e, %E, %g, %G, %ao %A).

...

Especifica argumentos para la cadena de formato, como en printf.

Valor devuelto

Si se ejecuta correctamente, dbgPrintEx devuelve el STATUS_SUCCESS de código NTSTATUS; de lo contrario, devuelve el código de error adecuado.

Observaciones

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 interprocesamiento (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, Levely las máscaras de filtro de componentes 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 Format sean estáticas y definidas en tiempo de compilación.

No hay ningún límite superior para el tamaño del Formato cadena 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 de DbgPrint y el depurador para obtener más información.

Requisitos

Requisito Valor
cliente mínimo admitido Disponible en Microsoft Windows XP y versiones posteriores.
de la plataforma de destino de Universal
encabezado de wdm.h (incluya Wdm.h)
biblioteca de NtDll.lib (modo de usuario); NtosKrnl.lib (modo kernel)
DLL de NtDll.dll (modo de usuario); NtosKrnl.exe (modo kernel)
irQL <= DIRQL (consulte la sección Comentarios)

Consulte también

dbgPrint

KdPrint

KdPrintEx

vDbgPrintEx