IOCTL_SMARTCARD_SET_PROTOCOL IOCTL (winsmcrd.h)
La requête IOCTL_SMARTCARD_SET_PROTOCOL définit le protocole que le pilote utilisera pour communiquer avec la carte à puce une fois la carte détectée (insérée).
Code principal
Mémoire tampon d’entrée
Irp->AssociatedIrp.SystemBuffer Contient un masque de protocoles acceptables pour les transmissions suivantes. Le masque peut être un or au niveau du bit des valeurs suivantes :
- SCARD_PROTOCOL_RAW
- SCARD_PROTOCOL_T0
- SCARD_PROTOCOL_T1
- SCARD_PROTOCOL_DEFAULT
- SCARD_PROTOCOL_OPTIMAL
Les deux dernières valeurs sont des définitions de bits supplémentaires qui indiquent que le pilote doit effectuer explicitement une sélection de type de protocole (PTS) avec les meilleurs paramètres de communication possibles (SCARD_PROTOCOL_OPTIMAL) ou utiliser le protocole implicite de la carte avec des paramètres standard (SCARD_PROTOCOL_DEFAULT). Si la carte ne prend en charge qu’un seul protocole avec un ensemble de paramètres de communication, les bits sont ignorés.
Parameters.DeviceIoControl.InputBufferLength Doit être défini sur sizeof(ULONG). Le pilote décide du protocole à utiliser avec la carte insérée.
Mémoire tampon de sortie
- Irp->AssociatedIrp.SystemBuffer Le pilote stocke le protocole sélectionné ici (par exemple, SCARD_PROTOCOL_T1). Un seul bit du masque peut être défini.
Longueur de la mémoire tampon de sortie
- Parameters.DeviceIoControl.OutputBufferLength Doit être sizeof(ULONG).
Bloc d’état
Irp->IoStatus.Information doit être défini sur sizeof(ULONG).
Irp->IoStatus.Status est défini sur l’une des valeurs suivantes.
Valeur | Signification |
---|---|
STATUS_SUCCESS | Un protocole a été sélectionné avec succès. |
STATUS_NO_MEDIA | Aucune carte à puce n’est détectée dans le lecteur. |
STATUS_IO_TIMEOUT | L’opération a expiré. |
STATUS_NOT_SUPPORTED | La carte à puce ne prend pas en charge les protocoles demandés. |
STATUS_INVALID_DEVICE_REQUEST | Le masque ne contient aucun protocole connu. |
Pour plus d’informations, consultez valeurs NTSTATUS.
Exigences
Exigence | Valeur |
---|---|
d’en-tête | winsmcrd.h |