Depuração do Driver de Cartão Inteligente

Observação

Os builds verificados estavam disponíveis em versões mais antigas do Windows, antes de Windows 10 versão 1803. Use ferramentas como Verificador de Driver e GFlags para marcar código do driver em versões posteriores do Windows.

As bibliotecas de driver de cartão inteligentes dão suporte a vários recursos de depuração. Cada recurso de depuração é representado por uma das seguintes constantes, que são definidas no arquivo de cabeçalho Smclib.h :

DEBUG_IOCTL
DEBUG_ATR
DEBUG_PROTOCOL
DEBUG_DRIVER
DEBUG_TRACE
DEBUG_ERROR
DEBUG_BREAK
DEBUG_ALL

O conjunto combinado de recursos de depuração habilitados é representado por um valor chamado nível de depuração. Você pode calcular esse valor usando o OR bit a bit das constantes que correspondem aos recursos que deseja habilitar.

Há duas maneiras de definir o nível de depuração. Primeiro, você pode usar o programa de teste de driver de cartão inteligente, Scdrvtst, que vem com o WDK (Kit de Driver do Windows). A segunda é usar a rotina de biblioteca de drivers smart cartão smart cartão SmartCardSetDebugLevel.

Em ambos os casos, você deve passar o valor para o nível de depuração que deseja para o programa ou rotina que define o nível de depuração. Por exemplo, para definir o nível de depuração do driver usando uma rotina de biblioteca de cartão inteligente, faça a seguinte chamada:

SmartcardSetDebugLevel(DebugLevel);

Para gravar mensagens de depuração de um driver de leitor, o driver deve chamar a seguinte rotina:

SmartcardDebug(
 ULONG DebugLevel,
 PCHAR Message
);

Importante

Você deve instalar a versão verificada do sistema operacional e a versão verificada do driver para obter mensagens de depuração.

Essa rotina também pode ser usada para gravar mensagens em um depurador remoto das seguintes maneiras.

  • Para gravar mensagens de erro, use a constante DEBUG_ERROR para DebugLevel.

  • Para gravar mensagens de driver padrão, use a constante DEBUG_DRIVER.

  • Para gravar mensagens de rastreamento que indicam quando o driver de leitor entra ou sai de uma rotina, use DEBUG_TRACE como DebugLevel.

Ao desenvolver um driver, use a versão verificada da biblioteca de driver de cartão inteligente e defina o nível de depuração como o máximo usando SmartcardSetDebugLevel(DEBUG_ALL) em sua rotina driverEntry.

Para obter informações sobre como configurar uma sessão de depuração remota, consulte Depuração do Windows.