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

A função WSPStringToAddress converte uma cadeia de caracteres numérica legível por humanos em uma estrutura de endereço de soquete (sockaddr) adequada para passar para rotinas do Windows Sockets que usam essa estrutura. Todos os componentes ausentes do endereço são padronizados com um valor razoável, se possível. Por exemplo, um número de porta ausente usa como padrão zero.

Sintaxe

LPWSPSTRINGTOADDRESS Lpwspstringtoaddress;

INT Lpwspstringtoaddress(
  [in]      LPWSTR AddressString,
  [in]      INT AddressFamily,
  [in]      LPWSAPROTOCOL_INFOW lpProtocolInfo,
  [out]     LPSOCKADDR lpAddress,
  [in, out] LPINT lpAddressLength,
  [out]     LPINT lpErrno
)
{...}

Parâmetros

[in] AddressString

Ponteiro para a cadeia de caracteres legível e terminada em humanos a ser convertida.

[in] AddressFamily

Endereçar a família à qual a cadeia de caracteres pertence ou AF_UNSPEC se ela for desconhecida.

[in] lpProtocolInfo

(obrigatório) Estrutura de WSAProtocol_Info do provedor.

[out] lpAddress

Buffer preenchido com uma única estrutura sockaddr .

[in, out] lpAddressLength

Comprimento do buffer de endereço, em bytes. Retorna o tamanho da estrutura sockaddr resultante. Se o buffer fornecido não for grande o suficiente, a função falhará com um erro específico de WSAEFAULT e esse parâmetro será atualizado com o tamanho necessário em bytes.

[out] lpErrno

Ponteiro para o código de erro.

Retornar valor

Se nenhum erro ocorrer, WSPStringToAddress retornará zero. Caso contrário, um valor de SOCKET_ERROR será retornado e um código de erro específico estará disponível no lpErrno.

Código do erro Significado
WSAEFAULT
O buffer de endereço especificado é muito pequeno, passe um buffer maior.
WSAEINVAL
Não foi possível converter a cadeia de caracteres em um sockaddr ou o provedor não pôde dar suporte à família de endereços indicada ou o lpProtocolInfo especificado não se referiu a uma estrutura de WSAProtocol_Info com suporte do provedor.
 
 

Comentários

Um provedor de serviços em camadas fornece uma implementação dessa função, mas também é um cliente dessa função se e quando chama WSPStringToAddress da próxima camada na cadeia de protocolos. Algumas considerações especiais se aplicam ao parâmetro lpProtocolInfo dessa função à medida que ela é propagada pelas camadas da cadeia de protocolos.

Se a próxima camada na cadeia de protocolo for outra camada, quando o WSPStringToAddress da próxima camada for chamado, essa camada deverá passar para a próxima camada um lpProtocolInfo que referencie a mesma estrutura de WSAProtocol_Info não modificada com as mesmas informações de cadeia não modificadas. No entanto, se a próxima camada for o protocolo base (ou seja, o último elemento na cadeia), essa camada executará uma substituição ao chamar WSPStringToAddress do provedor base. Nesse caso, a estrutura de WSAPROTOCOL_INFO do provedor base deve ser referenciada pelo parâmetro lpProtocolInfo .

Um benefício vital dessa política é que os provedores de serviços base não precisam estar cientes das cadeias de protocolo.

Essa mesma política de propagação se aplica ao propagar uma estrutura WSAProtocol_Info por meio de uma sequência em camadas de outras funções, como LPWSPAddressToString, LPWSPDuplicateSocket, WSPStartup ou LPWSPSocket.

Requisitos

Requisito Valor
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]
Plataforma de Destino Windows
Cabeçalho ws2spi.h

Confira também

Wsaprotocol_info

LPWSPDuplicateSocket

LPWSPSocket

Wspstartup

Sockaddr