Compartilhar via


IOCTL_SMARTCARD_SET_PROTOCOL IOCTL (winsmcrd.h)

A solicitação IOCTL_SMARTCARD_SET_PROTOCOL define o protocolo que o driver usará para se comunicar com o cartão inteligente depois que o cartão for detectado (inserido).

Código principal

IRP_MJ_DEVICE_CONTROL

Buffer de entrada

  • Irp->AssociatedIrp.SystemBuffer Contém uma máscara de protocolos aceitáveis para as transmissões a seguir. A máscara pode ser um OR bit a bit dos seguintes valores:

    • SCARD_PROTOCOL_RAW
    • SCARD_PROTOCOL_T0
    • SCARD_PROTOCOL_T1
    • SCARD_PROTOCOL_DEFAULT
    • SCARD_PROTOCOL_OPTIMAL

    Os dois últimos valores são definições de bits adicionais que indicam que o driver deve executar explicitamente a PTS (seleção de tipo de protocolo) com os melhores parâmetros de comunicação possíveis (SCARD_PROTOCOL_OPTIMAL) ou usar o protocolo implícito do cartão com parâmetros padrão (SCARD_PROTOCOL_DEFAULT). Se o cartão oferecer suporte a apenas um protocolo com um conjunto de parâmetros de comunicação, os bits serão ignorados.

  • Parameters.DeviceIoControl.InputBufferLength Deve ser definido como sizeof(ULONG). O driver decide qual protocolo da máscara usar com a cartão inserida.

Buffer de saída

  • Irp->AssociatedIrp.SystemBuffer O driver armazena o protocolo selecionado aqui (por exemplo, SCARD_PROTOCOL_T1). Somente um bit fora da máscara pode ser definido.

Comprimento do buffer de saída

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

Bloco de status

Irp->IoStatus.Information deve ser definido como sizeof(ULONG).

Irp->IoStatus.Status é definido como um dos valores a seguir.

Valor Significado
STATUS_SUCCESS Um protocolo foi selecionado com êxito.
STATUS_NO_MEDIA Nenhum cartão inteligente é detectado no leitor.
STATUS_IO_TIMEOUT Tempo limite da operação esgotado.
STATUS_NOT_SUPPORTED A cartão inteligente não dá suporte a nenhum dos protocolos solicitados.
STATUS_INVALID_DEVICE_REQUEST A máscara não contém nenhum protocolo conhecido.

Para obter mais informações, consulte Valores NTSTATUS.

Requisitos

Requisito Valor
Cabeçalho winsmcrd.h

Confira também

Guia de design de NFC (comunicação a curta distância)

Guia de design de cartão inteligente