IOCTL_NFCSE_HCE_REMOTE_RECV IOCTL (nfcsedev.h)
Retorna o próximo buffer de dados disponível ou, se não houver mais dados armazenados em buffer, a solicitação permanecerá pendente até que um buffer APDU esteja disponível para leitura. Em seguida, o buffer de dados deve ser retornado ao chamador. Observe que o chamador deve alocar um buffer de saída grande o suficiente para manter a maior APDU que foi recebida + 4 bytes de sobrecarga.
Código principal
Buffer de entrada
Nenhum
Comprimento do buffer de entrada
Nenhum
Buffer de saída
Um DWORD que indica o tamanho da estrutura SECURE_ELEMENT_HCE_DATA_PACKET mais sua carga, imediatamente seguido pela própria estrutura SECURE_ELEMENT_HCE_DATA_PACKET .
Bloco de status
Irp->IoStatus.Status será definido como STATUS_SUCCESS se a solicitação for bem-sucedida. Os códigos de erro possíveis são:
Código de retorno | Descrição |
---|---|
STATUS_BUFFER_OVERFLOW | O buffer fornecido era muito pequeno para receber a notificação, o primeiro DWORD conterá o tamanho do buffer esperado. |
STATUS_INVALID_PARAMETER | Se o buffer de entrada não for zero. |
STATUS_INVALID_DEVICE_STATE | Se o IOCTL for enviado em um identificador diferente de com o nome relativo 'SEManage'. |
Comentários
A seguir estão os requisitos aos quais o driver deve aderir.
- Esse IOCTL é enviado em uma conexão existente após o evento HCE Activated ser disparado.
- O driver deve dar suporte a CancelIo nesse IOCTL pendente.
- O driver deve manter uma fila "Recebida" da APDU recebida para a conexão atual.
- Quando este IOCTL é recebido no driver:
- Se a fila "Recebido" estiver vazia, o driver DEVERÁ aguardar o IOCTL para conclusão posterior.
- Se a fila "Recebido" não estiver vazia, o driver DEVERÁ desativar a fila de uma APDU, copiar o buffer de APDU para o buffer de saída do IOCTL e concluir o IOCTL com STATUS_SUCCESS imediatamente.
- Se o driver concluir esse IOCTL com STATUS_SUCCESS, o primeiro DWORD [4 bytes] do buffer de saída DEVERÁ conter o tamanho da estrutura SECURE_ELEMENT_HCE_DATA_PACKET mais sua carga.
- Se os dados de APDU recebidos forem muito grandes para serem copiados para o buffer de saída desse IOCTL, o driver DEVERÁ copiar o tamanho do buffer necessário para os quatro primeiros bytes do buffer de saída, definir o campo de informações do IOCTL como sizeof(DWORD) e concluir o IOCTL com STATUS_BUFFER_OVERFLOW. Os dados da APDU devem ser deixados na fila "Recebido".
Requisitos
Requisito | Valor |
---|---|
Cabeçalho | nfcsedev.h |