Compartilhar via


estrutura SOCK_NOTIFY_REGISTRATION (winsock2.h)

Representa as informações fornecidas para a função ProcessSocketNotifications .

Para obter mais informações e exemplos de código, consulte Notificações de estado do soquete Winsock.

Sintaxe

typedef struct SOCK_NOTIFY_REGISTRATION {
  SOCKET socket;
  PVOID  completionKey;
  UINT16 eventFilter;
  UINT8  operation;
  UINT8  triggerFlags;
  DWORD  registrationResult;
} SOCK_NOTIFY_REGISTRATION;

Membros

socket

Tipo: SOCKET

Um identificador para um soquete Winsock aberto por qualquer uma das funções WSASocket, socket, WSAAccept, accept ou WSADuplicateSocket . Há suporte apenas para soquetes de provedor do Microsoft Winsock .

completionKey

Tipo: PVOID

O valor a ser usado no parâmetro dwCompletionKey da função PostQueuedCompletionStatus quando as notificações são enviadas em nome do soquete. Esse parâmetro é usado na criação do registro. Para alterar a chave de conclusão, remova o registro e registre-o novamente.

eventFilter

Tipo: UINT16

Um conjunto de sinalizadores que indica as notificações que estão sendo solicitadas. Esse deve ser um ou mais dos seguintes valores (definidos em WinSock2.h).

SOCK_NOTIFY_REGISTER_EVENT_NONE. As notificações não devem ser emitidas. SOCK_NOTIFY_REGISTER_EVENT_IN. Uma notificação deve ser emitida quando os dados podem ser lidos sem bloqueio. SOCK_NOTIFY_REGISTER_EVENT_OUT. Uma notificação deve ser emitida quando os dados podem ser gravados sem bloqueio. SOCK_NOTIFY_REGISTER_EVENT_HANGUP. Uma notificação deve ser emitida quando uma conexão orientada a fluxo foi desconectada ou anulada. SOCK_NOTIFY_REGISTER_EVENTS_ALL. Tem o valor (SOCK_NOTIFY_REGISTER_EVENT_IN | SOCK_NOTIFY_REGISTER_EVENT_OUT | SOCK_NOTIFY_REGISTER_EVENT_HANGUP).

operation

Tipo: UINT8

Indica a operação a ser executada em um registro. No máximo, uma operação pode ser executada por vez. Esses valores são definidos em WinSock2.h.

SOCK_NOTIFY_OP_NONE. Nenhuma operação de registro deve ocorrer. Use isso se o aplicativo chamar ProcessSocketNotifications e estiver interessado apenas em receber notificações. SOCK_NOTIFY_OP_ENABLE. Habilita o registro. As notificações não devem ser habilitadas novamente até que a notificação de SOCK_NOTIFY_EVENT_DISABLE seja recebida. SOCK_NOTIFY_OP_DISABLE. Desabilita o registro, mas não destrói as estruturas de dados subjacentes. Observe que isso não remove o registro, apenas suprime a fila de novas notificações. As notificações que já foram enfileiradas ainda podem ser entregues até que o evento SOCK_NOTIFY_EVENT_DISABLE seja recebido. SOCK_NOTIFY_OP_REMOVE. Remove uma notificação registrada anteriormente. As notificações habilitadas e desabilitadas podem ser removidas. A notificação SOCK_NOTIFY_EVENT_REMOVE é emitida, com a garantia de que não serão emitidas mais notificações posteriormente para essa chave de conclusão, a menos que ela seja registrada novamente.

triggerFlags

Tipo: UINT8

Um conjunto de sinalizadores que indica o comportamento do gatilho (definido em WinSock2.h).

SOCK_NOTIFY_TRIGGER_ONESHOT. O registro será desabilitado (não removido) após a entrega da próxima notificação. SOCK_NOTIFY_TRIGGER_PERSISTENT. O registro permanecerá ativo até que seja explicitamente desabilitado ou removido. SOCK_NOTIFY_TRIGGER_LEVEL. O registro é para notificações disparadas em nível. Não compatível com gatilho de borda. Um dos gatilhos de borda ou de nível deve ser fornecido. SOCK_NOTIFY_TRIGGER_EDGE. O registro é para notificações disparadas por borda. Não compatível com gatilho de nível. Um dos gatilhos de borda ou de nível deve ser fornecido.

As notificações só são fornecidas quando o registro está habilitado. As notificações não são enfileiradas enquanto o registro está desabilitado. À medida que as notificações são enfileiradas para um determinado soquete, elas são agrupadas em uma única notificação. Portanto, vários eventos podem ser descritos por uma única máscara de evento para o soquete.

Considerando que o registro está habilitado, as notificações disparadas em nível são fornecidas sempre que as condições desejadas se mantêm.

Dado que o registro está habilitado, as notificações disparadas por borda são fornecidas sempre que uma condição muda de não manter a retenção para a retenção. A condição deve ser alterada enquanto o registro está habilitado para que uma notificação seja enfileirada. Dessa forma, após o registro, o buffer de recebimento do soquete deve ser completamente esvaziado para garantir que uma notificação seja recebida.

registrationResult

Tipo: DWORD

Após uma chamada bem-sucedida para ProcessSocketNotifications, registrationResult contém um código que indica o êxito ou a falha do registro. Um valor de ERROR_SUCCESS indica que o registro foi bem-sucedido.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 10 Build 20348
Servidor mínimo com suporte Windows 10 Build 20348
Cabeçalho winsock2.h

Confira também