Compartilhar via


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.