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