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:
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:
O driver do leitor passa todas as solicitações IOCTL para a rotina da biblioteca de drivers SmartcardDeviceControl (WDM ).
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.
Se os parâmetros forem válidos, SmartcardDeviceControl processará a solicitação IOCTL se puder.
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á.
A rotina de retorno de chamada chama todas as rotinas de biblioteca de driver necessárias para concluir o processamento da solicitação IOCTL.
Depois de processar a solicitação IOCTL, a rotina de retorno de chamada retorna para SmartcardDeviceControl.
SmartcardDeviceControl conclui o IRP que carregava o IOCTL.
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.