IOCTL_SMARTCARD_TRANSMIT IOCTL (winsmcrd.h)
Die IOCTL_SMARTCARD_TRANSMIT Anforderung überträgt Daten an die eingefügte Smartcard und empfängt Daten von dieser.
Hauptcode
Eingabepuffer
- Irp->AssociatedIrp.SystemBuffer Einen Zeiger auf eine SCARD_IO_REQUEST Struktur gefolgt von den Daten, die an die eingefügte Smartcard übertragen werden sollen.
Eingabepufferlänge
- Parameters.DeviceIoControl.InputBufferLength Enthält die Größe der Struktur sowie die Länge der nachgestellten Datenbytes (falls vorhanden). Das dwProtocol Member muss auf das zuvor ausgewählte Protokoll festgelegt werden, und das cbPciLength Member muss auf die Größe der SCARD_IO_REQUEST Struktur selbst festgelegt werden (in der Regel acht Byte). Die Struktur wird für zukünftige Protokolle verwendet. Daten, die an die Karte übermittelt werden, müssen sofort dieser Struktur folgen.
Ausgabepuffer
Der Bytepuffer enthält das Ergebnis der Übertragung. Der Puffer verweist auf die SCARD_IO_REQUEST Struktur unmittelbar gefolgt von den empfangenen Daten.
- Irp->AssociatedIrp.SystemBuffer erhält das Ergebnis der Übertragung. Dieser Puffer muss auch mit einer SCARD_IO_REQUEST Struktur beginnen. Alle Daten, die von der Karte empfangen wurden, müssen unmittelbar nach der Struktur gespeichert werden.
Länge des Ausgabepuffers
- Parameters.DeviceIoControl.OutputBufferLength Enthält die Länge des Ausgabepuffers.
Statusblock
Irp->IoStatus.Status wird auf einen der folgenden Werte festgelegt.
Wert | Bedeutung |
---|---|
STATUS_SUCCESS | Die Übertragung war erfolgreich. |
STATUS_NO_MEDIA | Im Lesegerät wird keine Smartcard erkannt. |
STATUS_IO_TIMEOUT | Timeout des Vorgangs. |
STATUS_INVALID_DEVICE_STATE | Das Protokoll in der Headerdatei stimmt nicht mit dem zuvor ausgewählten Smartcardprotokoll überein. |
STATUS_BUFFER_TOO_SMALL | Der Ausgabepuffer ist für die Rückgabedaten zu klein. |
STATUS_DEVICE_POWERED_OFF | Die Näherungsfunksteuerung ist deaktiviert. |
Bemerkungen
IOCTL_SMARTCARD_TRANSMIT überträgt Daten vom Client an die erkannte Smartcard in ISO7816-4-kompatiblen APDU. Diese APDUs werden in Bezug auf die PC/SC-Spezifikation interpretiert (Abschnitt 4.3.7 enthält detailliertere Anforderungen zur Unterstützung verschiedener NFC-Kontaktlose-Tag-Formate). Da das NFP-Feature denselben Treiber mit der Smartcard teilt, sollte die Karte direkt nach der Ermittlung verbunden werden, es ist keine explizite Verbindung für die "Übertragung" erforderlich.
Da der Eingabepuffer und der Ausgabepuffer auf denselben Speicherbereich zeigen, muss der Treiber das Überschreiben der Eingabedaten vermeiden. Verwenden Sie die Smartcardtreiberbibliothek, um sicherzustellen, dass die Eingabedaten nicht überschrieben werden.
Anforderungen
Anforderung | Wert |
---|---|
Header- | winsmcrd.h |
Siehe auch
Designleitfaden für Near Field Communication (NFC)