Compartir a través de


IOCTL_SMARTCARD_TRANSMIT IOCTL (winsmcrd.h)

La solicitud IOCTL_SMARTCARD_TRANSMIT transmite datos a y recibe datos de la tarjeta inteligente insertada.

Código principal

IRP_MJ_DEVICE_CONTROL

Búfer de entrada

  • Irp->AssociatedIrp.SystemBuffer Puntero a una estructura de SCARD_IO_REQUEST seguida de los datos que se van a transmitir a la tarjeta inteligente insertada.

Longitud del búfer de entrada

  • Parameters.DeviceIoControl.InputBufferLength Contiene el tamaño de la estructura más la longitud de los bytes de datos finales (si existe). El miembro dwProtocol debe establecerse en el protocolo seleccionado anteriormente y el miembro cbPciLength debe establecerse en el tamaño de la estructura SCARD_IO_REQUEST en sí (normalmente ocho bytes). La estructura se usa para protocolos futuros. Los datos que se transmitirán a la tarjeta deben seguir inmediatamente esta estructura.

Búfer de salida

El búfer bytes contiene el resultado de la transmisión. El búfer apunta a la estructura SCARD_IO_REQUEST inmediatamente seguida de los datos recibidos.

  • Irp->AssociatedIrp.SystemBuffer Recibe el resultado de la transmisión. Este búfer también debe comenzar con una estructura de SCARD_IO_REQUEST . Los datos recibidos de la tarjeta deben almacenarse inmediatamente después de la estructura.

Longitud del búfer de salida

  • Parameters.DeviceIoControl.OutputBufferLength Contiene la longitud del búfer de salida.

Bloque de estado

Irp->IoStatus.Status se establece en uno de los valores siguientes.

Valor Significado
STATUS_SUCCESS La transmisión fue correcta.
STATUS_NO_MEDIA No se detecta ninguna tarjeta inteligente en el lector.
STATUS_IO_TIMEOUT La operación agotó el tiempo de espera.
STATUS_INVALID_DEVICE_STATE El protocolo del archivo de encabezado no coincide con el protocolo de tarjeta inteligente que se seleccionó anteriormente.
STATUS_BUFFER_TOO_SMALL El búfer de salida es demasiado pequeño para los datos devueltos.
STATUS_DEVICE_POWERED_OFF El control de radio de proximidad está desactivado.

Comentarios

IOCTL_SMARTCARD_TRANSMIT transmite datos del cliente a la tarjeta inteligente detectada en APDU compatible con ISO7816-4. Estas APTU se interpretan con respecto a la especificación PC/SC (sección 4.3.7 tiene requisitos más detallados sobre la compatibilidad con diferentes formatos de etiqueta sin contacto NFC). Dado que la característica NFP comparte el mismo controlador con la tarjeta inteligente, la tarjeta debe estar conectada justo después de la detección, no se necesita ninguna conexión explícita para la "Transmisión".

Dado que el búfer de entrada y el búfer de salida apuntan al mismo área de memoria, el controlador debe evitar sobrescribir los datos de entrada. Use la biblioteca de controladores de tarjeta inteligente para asegurarse de que los datos de entrada no se sobrescriben.

Requisitos

Requisito Valor
Header winsmcrd.h

Consulte también

Guía de diseño de comunicación de campo cercano (NFC)

Guía de diseño de tarjetas inteligentes