Interaction avec la bibliothèque de pilotes de carte à puce
L’illustration suivante montre comment un pilote de lecteur interagit avec la bibliothèque de pilotes smart carte afin de traiter les demandes IOCTL qu’il reçoit du gestionnaire de ressources :
Les nombres suivants correspondent aux nombres de la figure précédente. À compter du numéro 1, la figure montre les étapes qu’un pilote de lecteur doit effectuer (avec la bibliothèque de pilotes fournie par le système) pour traiter une demande IOCTL :
Le pilote de lecteur transmet toutes les demandes IOCTL à la routine de bibliothèque de pilotes SmartcardDeviceControl (WDM).
Si les paramètres que le pilote de lecteur passe à SmartcardDeviceControl sont incorrects, SmartcardDeviceControl retourne un message d’erreur. SmartcardDeviceControl retourne sans remplir la demande IOCTL. Dans ce cas, le conducteur du lecteur doit remplir la demande IOCTL.
Si les paramètres sont valides, SmartcardDeviceControl traite la demande IOCTL si possible.
SmartcardDeviceControl vérifie si le pilote de lecteur a une routine de rappel définie pour la demande IOCTL qu’il traite. Si le rappel existe, SmartcardDeviceControl l’appelle .
La routine de rappel appelle toutes les routines de bibliothèque de pilotes requises pour terminer le traitement de la demande IOCTL.
Après avoir traité la demande IOCTL, la routine de rappel retourne à SmartcardDeviceControl.
SmartcardDeviceControl termine l’IRP qui portait le IOCTL.
SmartcardDeviceControl retourne le contrôle à la routine de répartition lecteur-pilote.
La bibliothèque de carte intelligente synchronise l’accès au pilote de lecteur. Aucune fonction de rappel ne sera appelée en même temps. Toutefois, la gestion des événements pour l’insertion et la suppression de carte doit être traitée de manière asynchrone.