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 中提供了特定的错误代码。

错误代码 含义
WSAEFAULT
指定的地址缓冲区太小,传入较大的缓冲区。
WSAEINVAL
无法将字符串转换为 sockaddr,或者提供程序无法支持所指示的地址系列,或者指定的 lpProtocolInfo 未引用提供程序支持的 WSAProtocol_Info 结构。
 
 

注解

分层服务提供程序提供此函数的实现,但如果且在调用协议链中下一层的 WSPStringToAddress 时,它也是此函数的客户端。 一些特殊注意事项适用于此函数的 lpProtocolInfo 参数,因为它通过协议链的层向下传播。

如果协议链中的下一层是另一层,则在调用下一层的 WSPStringToAddress 时,此层必须向下一层传递 一个 lpProtocolInfo,该 lpProtocolInfo 引用具有相同未修改链信息的相同未修改 WSAProtocol_Info 结构。 但是,如果下一层是基本协议 (即链) 中的最后一个元素,则此层在调用基提供程序的 WSPStringToAddress 时执行替换。 在这种情况下,lpProtocolInfo 参数应引用基提供程序的WSAPROTOCOL_INFO结构。

此策略的一个重要好处是基础服务提供商不必了解协议链。

通过其他函数(如 LPWSPAddressToString、LPWSPDuplicateSocketWSPStartup 或 LPWSPSocket)的分层序列传播WSAProtocol_Info结构时,将应用相同的传播策略。

要求

要求
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 ws2spi.h

另请参阅

WSAProtocol_Info

LPWSPDuplicateSocket

LPWSPSocket

WSPStartup

sockaddr