Funzione di callback LPWSPSTRINGTOADDRESS (ws2spi.h)

La funzione WSPStringToAddress converte una stringa numerica leggibile in una struttura di indirizzi socket (sockaddr) adatta per passare alle routine Di Windows Sockets che accettano tale struttura. Se possibile, per impostazione predefinita, tutti i componenti mancanti dell'indirizzo sono un valore ragionevole. Ad esempio, per impostazione predefinita un numero di porta mancante è zero.

Sintassi

LPWSPSTRINGTOADDRESS Lpwspstringtoaddress;

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

Parametri

[in] AddressString

Puntatore alla stringa leggibile senza terminazione zero da convertire.

[in] AddressFamily

Famiglia di indirizzi a cui appartiene la stringa o AF_UNSPEC se è sconosciuta.

[in] lpProtocolInfo

(obbligatorio) Struttura WSAProtocol_Info del provider.

[out] lpAddress

Buffer riempito con una singola struttura sockaddr .

[in, out] lpAddressLength

Lunghezza del buffer degli indirizzi, in byte. Restituisce le dimensioni della struttura sockaddr risultante. Se il buffer fornito non è sufficientemente grande, la funzione ha esito negativo con un errore specifico di WSAEFAULT e questo parametro viene aggiornato con le dimensioni richieste in byte.

[out] lpErrno

Puntatore al codice di errore.

Valore restituito

Se non si verifica alcun errore, WSPStringToAddress restituisce zero. In caso contrario, viene restituito un valore di SOCKET_ERROR e in lpErrno è disponibile un codice di errore specifico.

Codice di errore Significato
WSAEFAULT
Il buffer di indirizzi specificato è troppo piccolo e passa un buffer più grande.
WSAEINVAL
Impossibile convertire la stringa in sockaddr oppure il provider non è riuscito a supportare la famiglia di indirizzi indicata oppure lpProtocolInfo specificato non fa riferimento a una struttura WSAProtocol_Info supportata dal provider.
 
 

Commenti

Un provider di servizi a più livelli fornisce un'implementazione di questa funzione, ma è anche un client di questa funzione se e quando chiama WSPStringToAddress del livello successivo nella catena di protocolli. Alcune considerazioni speciali si applicano al parametro lpProtocolInfo di questa funzione durante la propagazione attraverso i livelli della catena di protocolli.

Se il livello successivo nella catena di protocolli è un altro livello, quando viene chiamato WSPStringToAddress del livello successivo, questo livello deve passare al livello successivo un lpProtocolInfo che fa riferimento alla stessa struttura WSAProtocol_Info non modificata con le stesse informazioni sulla catena non modificata. Tuttavia, se il livello successivo è il protocollo di base , ovvero l'ultimo elemento della catena, questo livello esegue una sostituzione quando si chiama WSPStringToAddress del provider di base. In questo caso, la struttura di WSAPROTOCOL_INFO del provider di base deve fare riferimento al parametro lpProtocolInfo .

Un vantaggio fondamentale di questo criterio è che i provider di servizi di base non devono essere consapevoli delle catene di protocolli.

Questo stesso criterio di propagazione si applica quando si propaga una struttura WSAProtocol_Info tramite una sequenza a più livelli di altre funzioni, ad esempio LPWSPAddressToString, LPWSPDuplicateSocket, WSPStartup o LPWSPSocket.

Requisiti

Requisito Valore
Client minimo supportato Windows 2000 Professional [solo app desktop]
Server minimo supportato Windows 2000 Server [solo app desktop]
Piattaforma di destinazione Windows
Intestazione ws2spi.h

Vedi anche

WSAProtocol_Info

LPWSPDuplicateSocket

LPWSPSocket

WSPStartup

sockaddr