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