Función vDbgPrintExWithPrefix (wdm.h)
La rutina vDbgPrintExWithPrefix envía una cadena al depurador de kernel si se cumplen determinadas condiciones especificadas. Esta rutina puede anexar un prefijo a la salida del depurador para ayudar a organizar los resultados de la depuración.
Sintaxis
NTSYSAPI ULONG vDbgPrintExWithPrefix(
[in] PCCH Prefix,
[in] ULONG ComponentId,
[in] ULONG Level,
[in] PCCH Format,
[in] va_list arglist
);
Parámetros
[in] Prefix
Cadena que se anexa al inicio de la salida del depurador. Puede usar esta cadena para organizar la salida del depurador agregando un identificador único.
Por ejemplo, una rutina específica del componente podría especificar el nombre del componente cuando llama a vDbgPrintExWithPrefix. Esta rutina agregaría automáticamente el nombre del componente al principio de toda la salida de depuración que se pasa a la rutina de impresión de depuración del componente.
[in] ComponentId
Componente que llama a esta rutina. Este parámetro debe ser uno de los identificadores de filtro de nombre de componente que se definen en 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
Gravedad del mensaje que se envía. Este parámetro 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 sobre cómo se tratan los valores, vea Lectura y filtrado de mensajes de depuración.
[in] Format
Puntero a la cadena de formato que se va a imprimir. La cadena Format admite la mayoría de los códigos de formato de estilo printf. Sin embargo, puede usar los códigos de formato Unicode (%C, %S, %lc, %ls, %wc, %ws y %wZ) solo con IRQL = PASSIVE_LEVEL. La rutina vDbgPrintExWithPrefix no admite ninguno de los tipos de punto flotante (%f, %e, %E, %g, %G, %a o %A).
[in] arglist
Lista de argumentos para la cadena de formato. La rutina vDbgPrintExWithPrefix usa esta lista de la misma manera que vprintf .
Valor devuelto
vDbgPrintExWithPrefix devuelve STATUS_SUCCESS si la operación se realiza correctamente. De lo contrario, esta rutina devuelve el código de error adecuado.
Comentarios
Solo los controladores en modo kernel pueden llamar a la rutina vDbgPrintExWithPrefix .
Se puede llamar a vDbgPrintExWithPrefix en IRQL <= DIRQL. Sin embargo, solo puede usar códigos de formato Unicode (%wc y %ws) en IRQL = PASSIVE_LEVEL. Además, dado que el depurador usa interrupciones de interproceso (IP) para comunicarse con otros procesadores, una llamada a vDbgPrintExWithPrefix en IRQL > DIRQL puede provocar interbloqueos.
vDbgPrintExWithPrefix pasa la cadena que crea 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 sobre lo que hace vDbgPrintEx , vea 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 vDbgPrintExWithPrefix. Si usa una cadena que no creó, debe comprobar que esta cadena es 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 de la lista arglist . Sin embargo, cualquier llamada única a vDbgPrintExWithPrefix transmite solo 512 bytes de información.
También hay un límite para el tamaño del búfer que usa el depurador. Para obtener más información sobre este límite, vea El búfer dbgPrint y el depurador.
Esta rutina se define en Wdm.h. Los identificadores de filtro de componentes se definen en Dpfilter.h.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Disponible en Microsoft Windows XP y versiones posteriores del sistema operativo. |
Plataforma de destino | Universal |
Encabezado | wdm.h (include Dpfilter.h, Wdm.h, Ntddk.h, Ndis.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) |