Функция обратного вызова LPWSPSTRINGTOADDRESS (ws2spi.h)

Функция WSPStringToAddress преобразует удобочитаемую числовую строку в структуру адреса сокета (sockaddr), подходящую для передачи в подпрограммы Windows Sockets, которые принимают такую структуру. Все отсутствующие компоненты адреса по умолчанию имеют разумное значение, если это возможно. Например, отсутствующий номер порта по умолчанию равен нулю.

Синтаксис

LPWSPSTRINGTOADDRESS Lpwspstringtoaddress;

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

Параметры

[in] AddressString

Указатель на преобразуемую строку с нулевым завершением.

[in] AddressFamily

Семейство адресов, к которому принадлежит строка, или AF_UNSPEC, если она неизвестна.

[in] lpProtocolInfo

(обязательно) Структура WSAProtocol_Info поставщика.

[out] lpAddress

Буфер, заполненный одной структурой sockaddr .

[in, out] lpAddressLength

Длина буфера адресов в байтах. Возвращает размер результирующей структуры sockaddr . Если предоставленный буфер недостаточно велик, функция завершается сбоем с определенной ошибкой WSAEFAULT и этот параметр обновляется с требуемым размером в байтах.

[out] lpErrno

Указатель на код ошибки.

Возвращаемое значение

Если ошибка не возникает, WSPStringToAddress возвращает ноль. В противном случае возвращается значение SOCKET_ERROR, а в lpErrno доступен определенный код ошибки.

Код ошибки Значение
WSAEFAULT
Указанный буфер адресов слишком мал, передайте буфер большего размера.
WSAEINVAL
Не удалось преобразовать строку в sockaddr, поставщику не удалось поддержать указанное семейство адресов, или указанный lpProtocolInfo не ссылается на структуру WSAProtocol_Info , поддерживаемую поставщиком.
 
 

Комментарии

Многоуровневый поставщик служб предоставляет реализацию этой функции, но он также является клиентом этой функции, если и когда он вызывает WSPStringToAddress следующего уровня в цепочке протоколов. Некоторые особые замечания относятся к параметру lpProtocolInfo этой функции, так как он распространяется вниз по уровням цепочки протоколов.

Если следующий слой в цепочке протоколов является другим слоем, то при вызове WSPStringToAddress следующего слоя этот слой должен передать следующему уровню lpProtocolInfo , который ссылается на ту же неизмененную WSAProtocol_Info структуру с теми же неизмененные сведениями о цепочке. Однако если следующим уровнем является базовый протокол (то есть последний элемент в цепочке), этот слой выполняет подстановку при вызове WSPStringToAddress базового поставщика. В этом случае на структуру WSAPROTOCOL_INFO базового поставщика следует ссылаться с помощью параметра lpProtocolInfo .

Одним из важнейших преимуществ этой политики является то, что поставщики базовых служб не должны знать о цепочках протоколов.

Эта же политика распространения применяется при распространении WSAProtocol_Info структуры через многоуровневую последовательность других функций, таких как LPWSPAddressToString, LPWSPDuplicateSocket, WSPStartup или LPWSPSocket.

Требования

Требование Значение
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header ws2spi.h

См. также раздел

WSAProtocol_Info

LPWSPDuplicateSocket

LPWSPSocket

WSPStartup

sockaddr