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
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 |