IOCTL_SMARTCARD_TRANSMIT IOCTL (winsmcrd.h)
A solicitação IOCTL_SMARTCARD_TRANSMIT transmite dados e recebe dados do cartão inteligente inserido.
Código principal
Buffer de entrada
- Irp->AssociatedIrp.SystemBuffer Um ponteiro para uma estrutura SCARD_IO_REQUEST seguida pelos dados a serem transmitidos para a cartão inteligente inserida.
Comprimento do buffer de entrada
- Parameters.DeviceIoControl.InputBufferLength Contém o tamanho da estrutura mais o comprimento dos bytes de dados à direita (se houver). O membro dwProtocol deve ser definido como o protocolo selecionado anteriormente e o membro cbPciLength deve ser definido como o tamanho da estrutura SCARD_IO_REQUEST em si (geralmente oito bytes). A estrutura é usada para protocolos futuros. Os dados que serão transmitidos para o cartão devem seguir imediatamente essa estrutura.
Buffer de saída
O buffer de bytes contém o resultado da transmissão. O buffer aponta para a estrutura SCARD_IO_REQUEST imediatamente seguida pelos dados recebidos.
- Irp->AssociatedIrp.SystemBuffer Recebe o resultado da transmissão. Esse buffer também deve começar com uma estrutura SCARD_IO_REQUEST . Todos os dados recebidos do cartão devem ser armazenados imediatamente após a estrutura.
Comprimento do buffer de saída
- Parameters.DeviceIoControl.OutputBufferLength Contém o comprimento do buffer de saída.
Bloco de status
Irp->IoStatus.Status é definido como um dos valores a seguir.
Valor | Significado |
---|---|
STATUS_SUCCESS | A transmissão foi bem-sucedida. |
STATUS_NO_MEDIA | Nenhum cartão inteligente é detectado no leitor. |
STATUS_IO_TIMEOUT | Tempo limite da operação esgotado. |
STATUS_INVALID_DEVICE_STATE | O protocolo no arquivo de cabeçalho não corresponde ao protocolo de cartão inteligente que foi selecionado anteriormente. |
STATUS_BUFFER_TOO_SMALL | O buffer de saída é muito pequeno para os dados de retorno. |
STATUS_DEVICE_POWERED_OFF | O controle de rádio de proximidade está desativado. |
Comentários
IOCTL_SMARTCARD_TRANSMIT transmite dados do cliente para a cartão inteligente detectada na APDU compatível com ISO7816-4. Essas APDUs são interpretadas em relação à especificação pc/SC (a Seção 4.3.7 tem requisitos mais detalhados sobre o suporte para diferentes formatos de marca nfc sem contato). Como o recurso NFP compartilha o mesmo driver com o cartão inteligente, o cartão deve ser conectado logo após a descoberta, nenhuma conexão explícita para o 'Transmit' é necessária.
Como o buffer de entrada e o buffer de saída estão apontando para a mesma área de memória, o driver deve evitar substituir os dados de entrada. Use a biblioteca de driver de cartão inteligente para garantir que os dados de entrada não sejam substituídos.
Requisitos
Requisito | Valor |
---|---|
Cabeçalho | winsmcrd.h |