LPWSPSTRINGTOADDRESS 回调函数 (ws2spi.h)
WSPStringToAddress 函数将人类可读的数值字符串转换为套接字地址结构, (sockaddr) 适合传递给采用此类结构的 Windows 套接字例程。 如果可能,地址的任何缺失组件都默认为合理的值。 例如,缺少的端口号默认为零。
语法
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 中提供了特定的错误代码。
错误代码 | 含义 |
---|---|
指定的地址缓冲区太小,传入较大的缓冲区。 | |
无法将字符串转换为 sockaddr,或者提供程序无法支持所指示的地址系列,或者指定的 lpProtocolInfo 未引用提供程序支持的 WSAProtocol_Info 结构。 |
注解
分层服务提供程序提供此函数的实现,但如果且在调用协议链中下一层的 WSPStringToAddress 时,它也是此函数的客户端。 一些特殊注意事项适用于此函数的 lpProtocolInfo 参数,因为它通过协议链的层向下传播。
如果协议链中的下一层是另一层,则在调用下一层的 WSPStringToAddress 时,此层必须向下一层传递 一个 lpProtocolInfo,该 lpProtocolInfo 引用具有相同未修改链信息的相同未修改 WSAProtocol_Info 结构。 但是,如果下一层是基本协议 (即链) 中的最后一个元素,则此层在调用基提供程序的 WSPStringToAddress 时执行替换。 在这种情况下,lpProtocolInfo 参数应引用基提供程序的WSAPROTOCOL_INFO结构。
此策略的一个重要好处是基础服务提供商不必了解协议链。
通过其他函数(如 LPWSPAddressToString、LPWSPDuplicateSocket、WSPStartup 或 LPWSPSocket)的分层序列传播WSAProtocol_Info结构时,将应用相同的传播策略。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 2000 Professional [仅限桌面应用] |
最低受支持的服务器 | Windows 2000 Server [仅限桌面应用] |
目标平台 | Windows |
标头 | ws2spi.h |