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 参数引用。 此策略的一个重要好处是基础服务提供商不必了解协议链。
通过其他函数(如 LPWSPDuplicateSocket、WSPStartup、LPWSPSocket 或 LPWSPStringToAddress)的分层序列传播WSAProtocol_Info结构时,此传播策略同样适用。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 2000 Professional [仅限桌面应用] |
最低受支持的服务器 | Windows 2000 Server [仅限桌面应用] |
目标平台 | Windows |
标头 | ws2spi.h |