Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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 l’utiliser avec CreateFile pour ouvrir un handle d’appareil.
Initialisez 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 de la carte.
IOCTL_SMARTCARD_IS_PRESENT : pour attendre l’arrivée d’une carte à puce.
IOCTL_SMARTCARD_IS_ABSENT : pour attendre le départ de la carte à puce.
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 la boucle.
IOCTL_SMARTCARD_GET_STATE
Dans les cas SCARD_UNKNOWN et SCARD_ABSENT, ne rien faire.
Dans le cas de SCARD_PRESENT, avaler la carte
Cas SCARD_SWALLOWED, réinitialisation à froid
Dans le cas de SCARD_POWERED, réinitialisation à chaud
Dans le cas de SCARD_NEGOTIABLE, déterminer l’ATR de la carte
Cas SCARD_SPECIFIC, déterminez l'ATR de la carte et le protocole
IOCTL_SMARTCARD_SET_PROTOCOL
Séquence de déconnexion
Le délai de mise hors tension démarre.
Début de la boucle.
IOCTL_SMARTCARD_GET_STATE
Dans le cas de SCARD_SPECIFIC, SCARD_NEGOTIABLE, SCARD_POWERED, régler la mise hors tension
Dans le cas de SCARD_SWALLOWED et SCARD_PRESENT, ne rien faire
Dans le cas de SCARD_ABSENT et SCARD_UNKNOWN : ne rien faire.