Функция обратного вызова 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 доступен определенный код ошибки.
Код ошибки | Значение |
---|---|
Указанный буфер AddressString слишком мал. Передайте буфер большего размера. | |
Указанный адрес не является допустимым адресом сокета, либо его семейство адресов не поддерживается поставщиком, либо указанный 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 |