Compartilhar via


Fechando um soquete SAN

Depois que o comutador windows sockets em ambos os lados de uma conexão chama a função WSPCloseSocket de um provedor de serviços SAN, o provedor de serviços SAN executa o seguinte procedimento para fechar um soquete SAN:

  1. Cada provedor de serviços SAN em ambos os lados da conexão remove a conexão e conclui as solicitações de recebimento, chamadas de função WSPRecv , retornando o código de erro apropriado no parâmetro lpErrno . Por exemplo, um provedor de serviços SAN retorna WSAECONNRESET para indicar que o par remoto redefine a conexão.

    Cada provedor de serviços SAN também sinaliza a conclusão de operações sobrepostas pendentes para que o soquete SAN seja fechado. O provedor de serviços SAN chama a função WPUCompleteOverlappedRequest para sinalizar a conclusão de uma operação sobreposta. Nessa chamada, o provedor de serviços SAN passa um ponteiro para a estrutura WSAOVERLAPPED associada à operação sobreposta. O provedor de serviços SAN também passa o código de erro WSA_OPERATION_ABORTED para especificar que a operação sobreposta foi cancelada porque o soquete SAN foi fechado. Antes de sinalizar a conclusão de uma operação sobreposta, o provedor de serviços SAN deve liberar qualquer memória necessária para a operação.

  2. Depois que o provedor de serviços SAN terminar de fazer chamadas up- chamadas para funções que são prefixadas com WPU - para a opção usando o identificador para o soquete SAN que foi obtido por meio de uma chamada up-call WPUCreateSocketHandle , o provedor de serviços SAN deve fazer uma chamada final para a opção chamando a função WPUCloseSocketHandle para fechar o identificador de soquete. Em seguida, o provedor de serviços SAN limpa tudo relacionado ao soquete SAN. Chamadas up são chamadas de função da tabela de expedição up-call do comutador. A opção fornece um ponteiro para essa tabela de expedição de chamada inicial quando chama a função WSPStartupEx do provedor de serviços SAN para começar a usar o provedor.

Desde que um provedor de serviços san execute o procedimento anterior para fechar um soquete SAN, a opção cuida de todo o resto.

Para evitar condições de corrida entre um provedor de serviços san e o comutador iniciando fechamentos de soquete, o provedor de serviços SAN nunca deve liberar estruturas de dados relacionadas a um soquete SAN até que a opção chame WSPCloseSocket.