IOCTL_SMARTCARD_SET_PROTOCOL IOCTL (winsmcrd.h)
La richiesta di IOCTL_SMARTCARD_SET_PROTOCOL imposta il protocollo che il driver userà per comunicare con la smart card dopo che la scheda viene rilevata (inserita).
Codice principale
Buffer di input
Irp->AssociatedIrp.SystemBuffer Contiene una maschera di protocolli accettabili per le trasmissioni seguenti. La maschera può essere un OR bit per bit dei valori seguenti:
- SCARD_PROTOCOL_RAW
- SCARD_PROTOCOL_T0
- SCARD_PROTOCOL_T1
- SCARD_PROTOCOL_DEFAULT
- SCARD_PROTOCOL_OPTIMAL
Gli ultimi due valori sono definizioni di bit aggiuntive che indicano che il driver deve eseguire in modo esplicito la selezione del tipo di protocollo (PTS) con i parametri di comunicazione migliori possibili (SCARD_PROTOCOL_OPTIMAL) o usare il protocollo implicito della scheda con parametri standard (SCARD_PROTOCOL_DEFAULT). Se la scheda supporta un solo protocollo con un set di parametri di comunicazione, i bit vengono ignorati.
Parameters.DeviceIoControl.InputBufferLength Deve essere impostato su sizeof(ULONG). Il driver decide quale protocollo fuori dalla maschera utilizzare con la scheda inserita.
Buffer di output
- Irp->AssociatedIrp.SystemBuffer Il driver archivia il protocollo selezionato qui (ad esempio, SCARD_PROTOCOL_T1). È possibile impostare un solo bit fuori dalla maschera.
Lunghezza del buffer di output
- Parameters.DeviceIoControl.OutputBufferLength deve essere sizeof(ULONG).
Blocco di stato
Irp->IoStatus.Information deve essere impostato su sizeof(ULONG).
Irp->IoStatus.Status è impostato su uno dei valori seguenti.
Valore | Significato |
---|---|
STATUS_SUCCESS | È stato selezionato correttamente un protocollo. |
STATUS_NO_MEDIA | Non viene rilevata alcuna smart card nel lettore. |
STATUS_IO_TIMEOUT | Timeout dell'operazione. |
STATUS_NOT_SUPPORTED | La smart card non supporta alcun protocollo richiesto. |
STATUS_INVALID_DEVICE_REQUEST | La maschera non contiene alcun protocollo noto. |
Per altre informazioni, vedere valori NTSTATUS.
Fabbisogno
Requisito | Valore |
---|---|
intestazione | winsmcrd.h |