Compartilhar via


IOCTL_NFP_GET_NEXT_TRANSMITTED_MESSAGE IOCTL (nfpdev.h)

Um cliente interessado em receber notificações de que uma mensagem foi transmitida enviará a solicitação IOCTL_NFP_GET_NEXT_TRANSMITTED_MESSAGE para o driver de proximidade.

Código principal

IRP_MJ_DEVICE_CONTROL

Buffer de entrada

Nenhum

Buffer de saída

Nenhum

Bloco de status

Irp-IoStatus.Status será definido como STATUS_SUCCESS se a solicitação for bem-sucedida>.

Caso contrário, Status para a condição de erro apropriada como um código NTSTATUS.

Para obter mais informações, consulte Valores NTSTATUS.

Comentários

  • Um aplicativo cliente enviará esse IOCTL em um loop de controle para o identificador de publicação. Duas transmissões separadas da mesma mensagem resultariam no disparo de dois eventos.
  • O cliente deve enviar outro IOCTL sempre que o pendente for concluído. O driver DEVE usar bloqueios apropriados para garantir que o número de conclusões bem-sucedidas desse IOCTL equivale ao número de vezes que a publicação foi transmitida.
  • As seguintes ações são necessárias ao usar este IOCTL:
    • Se esse IOCTL for recebido em um identificador que não tenha sido bem-sucedido anteriormente em um IOCTL_NFP_SET_PAYLOAD, o driver deverá concluí-lo com STATUS_INVALID_DEVICE_STATE.
    • O driver deve manter o equivalente a um contador "CompleteEventImmediately" (ULONG ou maior) no identificador de arquivo de publicação.
    • Quando este IOCTL é recebido no driver:
      • Se o contador for zero, o driver DEVERÁ aguardar o IOCTL para conclusão posterior.
      • Se o contador for maior que zero, o driver DEVERÁ diminuir o contador em um e concluir o IOCTL com STATUS_SUCCESS imediatamente.
    • Se a publicação for transmitida e nenhuma IOCTL estiver pendente no momento, o driver DEVERÁ incrementar o contador "CompleteEventImmediately" em um.
    • Se a publicação for transmitida enquanto houver um IOCTL pendente disponível, o driver DEVERÁ concluir o IRP pendente com STATUS_SUCCESS e NÃO incrementar o contador "CompleteEventImmediately".
    • Se o IOCTL contiver um buffer de entrada ou saída, o driver DEVERÁ concluir o IOCTL com STATUS_INVALID_PARAMETER.
    • Se esse IOCTL for recebido enquanto outro estiver pendente no identificador de publicação, o segundo (ou posterior) DEVERÁ ser concluído com STATUS_INVALID_DEVICE_STATE.
    • O driver DEVE dar suporte a CancelIo do IOCTL pendente.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 8
Cabeçalho nfpdev.h

Confira também

Guia de design geral de NFC (comunicação a curta distância)

Guia de design de proximidade de campo próximo (Toque e Fazer, modelo de provedor NFP, requisitos de driver)