IOCTL_SMARTCARD_TRANSMIT IOCTL (winsmcrd.h)
La demande de IOCTL_SMARTCARD_TRANSMIT transmet des données à l’carte intelligente insérée et reçoit les données à partir de celle-ci.
Code principal
Mémoire tampon d'entrée
- Irp->AssociatedIrp.SystemBuffer Pointeur vers une structure de SCARD_IO_REQUEST suivi des données à transmettre au carte intelligent inséré.
Longueur de la mémoire tampon d’entrée
- Parameters.DeviceIoControl.InputBufferLength Contient la taille de la structure plus la longueur des octets de données de fin (le cas échéant). Le membre dwProtocol doit être défini sur le protocole qui a été sélectionné précédemment, et le membre cbPciLength doit être défini sur la taille de la structure SCARD_IO_REQUEST elle-même (généralement huit octets). La structure est utilisée pour les protocoles futurs. Les données qui seront transmises au carte doivent suivre immédiatement cette structure.
Mémoire tampon de sortie
La mémoire tampon octets contient le résultat de la transmission. La mémoire tampon pointe vers la structure SCARD_IO_REQUEST immédiatement suivie des données reçues.
- Irp->AssociatedIrp.SystemBuffer reçoit le résultat de la transmission. Cette mémoire tampon doit également commencer par une structure SCARD_IO_REQUEST . Toutes les données reçues du carte doivent être stockées immédiatement après la structure.
Longueur de la mémoire tampon de sortie
- Parameters.DeviceIoControl.OutputBufferLength Contient la longueur de la mémoire tampon de sortie.
Bloc d’état
Irp->IoStatus.Status est défini sur l’une des valeurs suivantes.
Valeur | Signification |
---|---|
STATUS_SUCCESS | La transmission a réussi. |
STATUS_NO_MEDIA | Aucune carte intelligente n’est détectée dans le lecteur. |
STATUS_IO_TIMEOUT | L'opération a expiré. |
STATUS_INVALID_DEVICE_STATE | Le protocole dans le fichier d’en-tête ne correspond pas au protocole smart carte précédemment sélectionné. |
STATUS_BUFFER_TOO_SMALL | La mémoire tampon de sortie est trop petite pour les données de retour. |
STATUS_DEVICE_POWERED_OFF | La radio de proximité est désactivée. |
Remarques
IOCTL_SMARTCARD_TRANSMIT transmet les données du client au carte intelligent détecté dans l’API compatible ISO7816-4. Ces APDUs sont interprétés en ce qui concerne la spécification PC/SC (la section 4.3.7 contient des exigences plus détaillées sur la prise en charge des différents formats de balise NFC sans contact). Étant donné que la fonctionnalité NFP partage le même pilote avec le carte intelligent, le carte doit être connecté juste après la découverte, aucune connexion explicite pour la transmission n’est nécessaire.
Étant donné que la mémoire tampon d’entrée et la mémoire tampon de sortie pointent vers la même zone mémoire, le pilote doit éviter de remplacer les données d’entrée. Utilisez la bibliothèque de pilotes smart carte pour vous assurer que les données d’entrée ne sont pas remplacées.
Configuration requise
Condition requise | Valeur |
---|---|
En-tête | winsmcrd.h |
Voir aussi
Guide de conception de la communication en champ proche (NFC)