Função de retorno de chamada LPWSPCLEANUP (ws2spi.h)

A função LPWSPCleanup encerra o uso do provedor de serviços do Windows Sockets.

Sintaxe

LPWSPCLEANUP Lpwspcleanup;

int Lpwspcleanup(
  [out] LPINT lpErrno
)
{...}

Parâmetros

[out] lpErrno

Ponteiro para o código de erro.

Valor retornado

O valor retornado será zero se a operação tiver sido iniciada com êxito. Caso contrário, o valor SOCKET_ERROR será retornado e um número de erro específico estará disponível no lpErrno.

Código do Erro Significado
WSANOTINITIALISED
Uma chamada **WSPStartup** bem-sucedida deve ocorrer antes de usar essa função.
WSAENETDOWN
O subsistema de rede falhou.
WSAEINVAL
O identificador do provedor fornecido ao provedor de espaço de nome não é gerenciado pelo provedor de espaço de nome.

Comentários

O cliente SPI do Windows Sockets 2 é necessário para executar uma chamada WSPStartup bem-sucedida antes que ele possa usar provedores de serviço Winsock. Quando tiver concluído o uso de provedores de serviços Winsock, o cliente SPI chamará LPWSPCleanup para se desregister de um provedor de serviços Winsock e permitirá que o provedor de serviços libere todos os recursos alocados em nome do cliente Windows Sockets 2. É permitido que os clientes SPI façam mais de uma chamada WSPStartup . Para cada chamada WSPStartup , uma chamada LPWSPCleanup correspondente também será emitida. Somente o LPWSPCleanup final para o provedor de serviços faz a limpeza real; as chamadas anteriores simplesmente decrementam uma contagem de referência interna no provedor de serviços Winsock.

Quando a contagem de referência interna atinge zero e as operações de limpeza reais são iniciadas, qualquer bloqueio pendente ou chamadas assíncronas emitidas por qualquer thread nesse processo são canceladas sem postar mensagens de notificação ou sinalizar objetos de evento. Todas as operações de envio e recebimento sobrepostas pendentes (LPWSPSend, LPWSPSendTo, LPWSPRecv, LPWSPRecvFrom com um soquete sobreposto) emitidas por qualquer thread nesse processo também são canceladas sem definir o objeto de evento ou invocar a rotina de conclusão, se especificado. Nesse caso, as operações sobrepostas pendentes falham com o erro status WSA_OPERATION_ABORTED. Todos os soquetes abertos quando LPWSPCleanup é chamado são redefinidos e desalocados automaticamente como se LPWSPCloseSocket fosse chamado; soquetes que foram fechados com LPWSPCloseSocket , mas que ainda têm dados pendentes a serem enviados, não são afetados, mas os dados pendentes ainda são enviados.

Essa função não deve retornar até que a DLL do provedor de serviços esteja preparada para ser descarregada da memória. Em particular, todos os dados restantes a serem transmitidos já devem ter sido enviados ou ser enfileirados para transmissão por partes da pilha de transporte que não serão descarregadas da memória junto com a DLL do provedor de serviços.

Um provedor de serviços Winsock deve estar preparado para lidar com um processo que termina sem invocar LPWSPCleanup (por exemplo, como resultado de um erro). Um provedor de serviços Winsock deve garantir que o LPWSPCleanup deixe as coisas em um estado no qual o Ws2_32.dll possa invocar imediatamente o WSPStartup para restabelecer o uso do Winsock.

Requisitos

   
Cliente mínimo com suporte Windows 2000 Professional [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows 2000 Server [somente aplicativos da área de trabalho]
Cabeçalho ws2spi.h

Confira também

LPWSPCloseSocket

LPWSPShutdown

Wspstartup