Freigeben über


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

IRP_MJ_DEVICE_CONTROL

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)

Smartcard-Entwurfshandbuch