Exemple de séquence
Voici un exemple de séquence de IOCTL dans le gestionnaire de ressources de carte à puce :
Séquence de démarrage
Utilisez l’API DevObj ou CfgMgr avec le GUID de l’interface de périphérique d’accès à la carte à puce pour découvrir le nom du pilote de périphérique NFC et utilisez-le avec CreateFile pour ouvrir un handle d’appareil.
Initialiser le pool de threads.
Déterminez le nom du lecteur.
- IOCTL_SMARTCARD_GET_ATTRIBUTE sur SCARD_ATTR_VENDOR_NAME, SCARD_ATTR_VENDOR_IFD_TYPE et SCARD_ATTR_DEVICE_UNIT
Déterminez les caractéristiques du lecteur.
- IOCTL_SMARTCARD_GET_ATTRIBUTE sur SCARD_ATTR_CHARACTERISTICS
Démarrez le moniteur d’état carte.
IOCTL_SMARTCARD_IS_PRESENT : pour attendre l’arrivée d’un carte intelligent.
IOCTL_SMARTCARD_IS_ABSENT : pour attendre le départ du carte intelligent.
La réinitialisation de l’alimentation n’est pas pertinente, car nous ne prenons pas en charge l’état SCARD_SWALLOWED SCARD_POWERED.
Séquence de connexion
Début de boucle.
IOCTL_SMARTCARD_GET_STATE
Cas SCARD_UNKNOWN et SCARD_ABSENT, ne rien faire
Cas SCARD_PRESENT, carte d’avale
SCARD_SWALLOWED cas, réinitialisation à froid
Cas SCARD_POWERED, réinitialisation à chaud
SCARD_NEGOTIABLE cas, déterminez le carte ATR
SCARD_SPECIFIC de cas, déterminez les carte ATR et le protocole
IOCTL_SMARTCARD_SET_PROTOCOL
Séquence de déconnexion
Le délai d’attente de mise hors tension démarre.
Début de boucle.
IOCTL_SMARTCARD_GET_STATE
Cas SCARD_SPECIFIC, SCARD_NEGOTIABLE, SCARD_POWERED, mettre hors tension
Cas SCARD_SWALLOWED, SCARD_PRESENT, ne rien faire
SCARD_ABSENT cas, SCARD_UNKNOWN, ne rien faire
Rubriques connexes
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour