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 un 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 los hay). El miembro dwProtocol debe establecerse en el protocolo seleccionado anteriormente y el miembro cbPciLength debe establecerse en el tamaño de la propia estructura SCARD_IO_REQUEST (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 seguido de los datos recibidos.

  • Irp->AssociatedIrp.SystemBuffer Recibe el resultado de la transmisión. Este búfer también debe comenzar con una estructura 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 siguientes valores.

Valor Significado
STATUS_SUCCESS La transmisión se realizó correctamente.
STATUS_NO_MEDIA No se detecta ninguna tarjeta inteligente en el lector.
STATUS_IO_TIMEOUT Se agota el tiempo de espera de la operación.
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.

Observaciones

IOCTL_SMARTCARD_TRANSMIT transmite datos del cliente a la tarjeta inteligente detectada en APDU compatible con ISO7816-4. Estas API 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 etiquetas sin contacto NFC). Dado que la característica NFP comparte el mismo controlador con la tarjeta inteligente, la tarjeta debe conectarse 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
encabezado de 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