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 参数引用。 此策略的一个重要好处是基础服务提供商不必了解协议链。

通过其他函数(如 LPWSPDuplicateSocket、WSPStartup、LPWSPSocket 或 LPWSPStringToAddress)的分层序列传播WSAProtocol_Info结构时,此传播策略同样适用。

要求

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

另请参阅

WSAProtocol_Info

WSPDucplicateSocket

LPWSPSocket

WSPStartup

sockaddr