Compartir a través de


IOCTL_SMARTCARD_SET_PROTOCOL IOCTL (winsmcrd.h)

La solicitud IOCTL_SMARTCARD_SET_PROTOCOL establece el protocolo que el controlador usará para comunicarse con la tarjeta inteligente después de detectar la tarjeta (insertada).

Código principal

IRP_MJ_DEVICE_CONTROL

Búfer de entrada

  • Irp->AssociatedIrp.SystemBuffer Contiene una máscara de protocolos que son aceptables para las siguientes transmisiones. La máscara puede ser un OR bit a bit de los siguientes valores:

    • SCARD_PROTOCOL_RAW
    • SCARD_PROTOCOL_T0
    • SCARD_PROTOCOL_T1
    • SCARD_PROTOCOL_DEFAULT
    • SCARD_PROTOCOL_OPTIMAL

    Los dos últimos valores son definiciones de bits adicionales que indican que el controlador debe realizar explícitamente la selección de tipos de protocolo (PTS) con los mejores parámetros de comunicación posibles (SCARD_PROTOCOL_OPTIMAL) o usar el protocolo implícito de la tarjeta con parámetros estándar (SCARD_PROTOCOL_DEFAULT). Si la tarjeta solo admite un protocolo con un conjunto de parámetros de comunicación, se omiten los bits.

  • Parameters.DeviceIoControl.InputBufferLength Debe establecerse en sizeof(ULONG). El controlador decide qué protocolo de la máscara se va a usar con la tarjeta insertada.

Búfer de salida

  • Irp->AssociatedIrp.SystemBuffer El controlador almacena el protocolo seleccionado aquí (por ejemplo, SCARD_PROTOCOL_T1). Solo se puede establecer un bit fuera de la máscara.

Longitud del búfer de salida

  • Parameters.DeviceIoControl.OutputBufferLength debe ser sizeof(ULONG).

Bloque de estado

Irp->IoStatus.Information debe establecerse en sizeof(ULONG).

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

Valor Significado
STATUS_SUCCESS Se seleccionó correctamente un protocolo.
STATUS_NO_MEDIA No se detecta ninguna tarjeta inteligente en el lector.
STATUS_IO_TIMEOUT La operación agotó el tiempo de espera.
STATUS_NOT_SUPPORTED La tarjeta inteligente no admite ninguno de los protocolos solicitados.
STATUS_INVALID_DEVICE_REQUEST La máscara no contiene ningún protocolo conocido.

Para obtener más información, vea Valores NTSTATUS.

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