Compartilhar via


Interação com a Biblioteca de Driver de Cartão Inteligente

A figura a seguir mostra como um driver de leitor interage com a biblioteca de drivers de cartão inteligente para processar solicitações IOCTL que ele recebe do gerenciador de recursos:

diagrama ilustrando como um driver de leitor interage com a biblioteca de driver de cartão inteligente para processar solicitações ioctl .

Os números a seguir correspondem aos números na figura anterior. A partir do número 1, a figura mostra as etapas que um driver de leitor deve concluir (juntamente com a biblioteca de driver fornecida pelo sistema) para processar uma solicitação IOCTL:

  1. O driver do leitor passa todas as solicitações IOCTL para a rotina da biblioteca de drivers SmartcardDeviceControl (WDM ).

  2. Se os parâmetros que o driver de leitor passa para SmartcardDeviceControl estiverem incorretos, SmartcardDeviceControl retornará com uma mensagem de erro. SmartcardDeviceControl retorna sem concluir a solicitação IOCTL. Nessa situação, o driver de leitor deve concluir a solicitação IOCTL.

  3. Se os parâmetros forem válidos, SmartcardDeviceControl processará a solicitação IOCTL se puder.

  4. SmartcardDeviceControl verifica se o driver de leitor tem uma rotina de retorno de chamada definida para a solicitação IOCTL que está processando. Se o retorno de chamada existir, SmartcardDeviceControl o chamará.

  5. A rotina de retorno de chamada chama todas as rotinas de biblioteca de driver necessárias para concluir o processamento da solicitação IOCTL.

  6. Depois de processar a solicitação IOCTL, a rotina de retorno de chamada retorna para SmartcardDeviceControl.

  7. SmartcardDeviceControl conclui o IRP que carregava o IOCTL.

  8. SmartcardDeviceControl retorna o controle para a rotina de expedição do leitor-driver.

A biblioteca de cartão inteligente sincroniza o acesso ao driver de leitor. Nenhuma das duas funções de retorno de chamada será chamada ao mesmo tempo. No entanto, a manipulação de eventos para cartão inserção e remoção deve ser processada de forma assíncrona.