Поделиться через


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

Функция LPWSPAddressToString преобразует все компоненты структуры sockaddr в удобочитаемое числовое строковое представление адреса. Используется в основном для отображения.

Синтаксис

LPWSPADDRESSTOSTRING Lpwspaddresstostring;

INT Lpwspaddresstostring(
  [in]      LPSOCKADDR lpsaAddress,
  [in]      DWORD dwAddressLength,
  [in]      LPWSAPROTOCOL_INFOW lpProtocolInfo,
  [out]     LPWSTR lpszAddressString,
  [in, out] LPDWORD lpdwAddressStringLength,
  [out]     LPINT lpErrno
)
{...}

Параметры

[in] lpsaAddress

Указатель на структуру sockaddr для преобразования в строку.

[in] dwAddressLength

Длина адреса sockaddr в байтах.

[in] lpProtocolInfo

(обязательно) WSAProtocol_Info структуры, связанной с поставщиком, который будет выполнять перевод.

[out] lpszAddressString

Буфер, получающий удобочитаемую строку адреса.

[in, out] lpdwAddressStringLength

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

[out] lpErrno

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

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

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

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

Комментарии

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

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

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

Требования

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

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

WSAProtocol_Info

WSPDucplicateSocket

LPWSPSocket

Запуск WSP

sockaddr