Partilhar via


Depuração de controlador de cartão inteligente

Observação

As compilações verificadas estavam disponíveis em versões mais antigas do Windows, antes do Windows 10 versão 1803. Use ferramentas como o Verificador de Driver e GFlags para verificar o código do driver em versões posteriores do Windows.

As bibliotecas de controladores de cartões inteligentes suportam 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 este valor usando o OU bit a bit das constantes que correspondem às funcionalidades que deseja habilitar.

Há duas maneiras de definir o nível de depuração. Primeiro, pode usar o programa de teste do controlador de cartão inteligente, Scdrvtst, que vem com o Kit de Controladores do Windows (WDK). O segundo é usar a rotina da biblioteca do driver de cartão inteligente SmartcardSetDebugLevel.

Em ambos os casos, você deve passar o valor do nível de depuração desejado 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 através de uma rotina da biblioteca de smart cards, faça a seguinte chamada:

SmartcardSetDebugLevel(DebugLevel);

Para escrever mensagens de diagnóstico de um driver de dispositivo de leitura, o driver deve chamar a seguinte rotina:

SmartcardDebug(
 ULONG DebugLevel,
 PCHAR Message
);

Importante

Você deve instalar a versão verificada do sistema operativo e a versão verificada do driver para obter mensagens de diagnóstico.

Esta rotina também pode ser usada para escrever mensagens para um depurador remoto nas seguintes formas.

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

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

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

Ao desenvolver um driver, use a versão verificada da biblioteca de drivers de cartão inteligente e defina o nível de depuração ao 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.