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
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 seleção de tipo de protocolo (PTS) 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 der 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 sair da máscara usar com o cartão inserido.
Buffer de saída
- Irp->AssociatedIrp.SystemBuffer O driver armazena o protocolo selecionado aqui (por exemplo, SCARD_PROTOCOL_T1). Apenas 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 está 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 | A operação atingiu o tempo limite. |
STATUS_NOT_SUPPORTED | O 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 |