Depuración de controladores de tarjeta inteligente
Nota
Las compilaciones comprobadas estaban disponibles en versiones anteriores de Windows, antes de Windows 10 versión 1803. Use herramientas como Comprobador de controladores y GFlags para comprobar el código de controlador en versiones posteriores de Windows.
Las bibliotecas de controladores de tarjeta inteligente admiten varias características de depuración. Cada característica de depuración se representa mediante una de las siguientes constantes, que se definen en el archivo de encabezado Smclib.h :
DEBUG_IOCTL
DEBUG_ATR
DEBUG_PROTOCOL
DEBUG_DRIVER
DEBUG_TRACE
DEBUG_ERROR
DEBUG_BREAK
DEBUG_ALL
El conjunto combinado de características de depuración habilitadas se representa mediante un valor denominado nivel de depuración. Puede calcular este valor tomando el OR bit a bit de las constantes que corresponden a las características que desea habilitar.
Hay dos maneras de establecer el nivel de depuración. En primer lugar, puedes usar el programa de prueba de controladores de tarjeta inteligente, Scdrvtst, que viene con el Kit de controladores de Windows (WDK). El segundo es usar la rutina de biblioteca de controladores de tarjeta inteligente SmartcardSetDebugLevel .
En ambos casos, debe pasar el valor para el nivel de depuración que desee para el programa o rutina que establece el nivel de depuración. Por ejemplo, para establecer el nivel de depuración desde el controlador mediante una rutina de biblioteca de tarjetas inteligentes, realice la siguiente llamada:
SmartcardSetDebugLevel(DebugLevel);
Para escribir mensajes de depuración desde un controlador de lector, el controlador debe llamar a la rutina siguiente:
SmartcardDebug(
ULONG DebugLevel,
PCHAR Message
);
Importante
Debe instalar la versión comprobada del sistema operativo y la versión comprobada del controlador para obtener mensajes de depuración.
Esta rutina también se puede usar para escribir mensajes en un depurador remoto de las siguientes maneras.
Para escribir mensajes de error, use la constante DEBUG_ERROR para DebugLevel.
Para escribir mensajes de controlador estándar, use la constante DEBUG_DRIVER.
Para escribir mensajes de seguimiento que indican cuándo el controlador del lector entra o sale de una rutina, use DEBUG_TRACE como DepurarLevel.
Al desarrollar un controlador, use la versión comprobada de la biblioteca de controladores de tarjeta inteligente y establezca el nivel de depuración en el máximo mediante SmartcardSetDebugLevel(DEBUG_ALL) en la rutina DriverEntry .
Para obtener información sobre cómo configurar una sesión de depuración remota, vea Depuración de Windows.