IOCTL_NFCSE_GET_NEXT_EVENT IOCTL (nfcsedev.h)

O código de controle IOCTL_NFCSE_GET_NEXT_EVENT retorna o próximo evento disponível no buffer ou se não houver mais eventos armazenados em buffer pendentes até que um evento de elemento seguro esteja disponível. Em seguida, os detalhes do evento devem ser retornados ao chamador.

Código principal

IRP_MJ_DEVICE_CONTROL

Buffer de entrada

Nenhum

Comprimento do buffer de entrada

Nenhum

Buffer de saída

Um DWORD que indica o tamanho da estrutura SECURE_ELEMENT_EVENT_INFO mais sua carga, imediatamente seguido pela própria estrutura SECURE_ELEMENT_EVENT_INFO .

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_INVALID_DEVICE_STATE Esse código é retornado quando esse IOCTL é chamado em um identificador de dispositivo que tem um nome de arquivo diferente de SEEvents ou quando já há outra solicitação pendente que ainda não foi concluída.
STATUS_INVALID_PARAMETER Esse código é retornado quando o buffer de saída não é zero ou quando o GUID do elemento seguro não corresponde a nenhuma das IDs enumeradas.

Comentários

A seguir estão os requisitos aos quais o driver deve aderir.

  • Esse IOCTL deve ser chamado em um identificador que tenha um nome de arquivo relativo SEEvents ; caso contrário, o driver retornará STATUS_INVALID_DEVICE_STATE
  • Esse driver deve dar suporte ao CancelIO para esse IOCTL pendente.
  • Esse driver deve manter uma fila recebida dos eventos de elemento seguro recebidos que correspondem ao tipo de assinatura.
  • As seguintes condições devem ser atendidas quando este IOCTL é recebido no driver:
    • Se a fila recebida estiver vazia, o driver deverá aguardar o IOCTL para conclusão posterior.
    • Se a fila recebida não estiver vazia, o driver deverá desativar a fila de um evento, copiar o buffer de mensagem 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_EVENT_INFO mais sua carga.
  • Se uma informação de evento de elemento seguro recebido for muito grande para ser copiada para o buffer 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. Em seguida, o evento deve ser deixado na fila recebida.

Requisitos

Requisito Valor
Cabeçalho nfcsedev.h