resolveIpNetEntry2 函数 (netioapi.h)

ResolveIpNetEntry2 函数解析本地计算机上邻居 IP 地址条目的物理地址。

语法

IPHLPAPI_DLL_LINKAGE _NETIOAPI_SUCCESS_ NETIOAPI_API ResolveIpNetEntry2(
  [in, out]      PMIB_IPNET_ROW2     Row,
  [in, optional] const SOCKADDR_INET *SourceAddress
);

参数

[in, out] Row

指向邻居 IP 地址条目 MIB_IPNET_ROW2 结构条目的指针。 成功返回后,将使用邻居 IP 地址的属性更新此结构。

[in, optional] SourceAddress

指向可选源 IP 地址的指针,用于选择要为其发送邻居 IP 地址条目的请求的接口。

返回值

如果函数成功,则返回值NO_ERROR。

如果函数失败,则返回值为以下错误代码之一。

返回代码 说明
ERROR_BAD_NET_NAME
找不到网络名称。 如果无法访问具有邻居 IP 地址的网络,则返回此错误。
ERROR_INVALID_PARAMETER
向该函数传递了无效参数。 如果在 Row 参数中传递 NULL 指针,Row 参数指向MIB_IPNET_ROW2Address 成员未设置为有效的 IPv4 或 IPv6 地址,或者 Row 参数指向的MIB_IPNET_ROW2InterfaceLuidInterfaceIndex 成员均未指定,则返回此错误。 如果在 Address 成员中传递了环回地址,也会返回此错误。
ERROR_NOT_FOUND
找不到指定的接口。 如果找不到 Row 参数指向的MIB_IPNET_ROW2InterfaceLuidInterfaceIndex 成员指定的网络接口,则返回此错误。
ERROR_NOT_SUPPORTED
不支持该请求。 如果本地计算机上没有 IPv4 堆栈,并且 Row 参数指向的MIB_IPNET_ROW2Address 成员中指定了 IPv4 地址,或者本地计算机上没有 IPv6 堆栈,并且 Address 成员中指定了 IPv6 地址,则返回此错误。
其他
使用 FormatMessage 获取返回错误的消息字符串。

注解

ResolveIpNetEntry2 函数在 Windows Vista 及更高版本上定义。

ResolveIpNetEntry2 函数用于解析本地计算机上邻居 IP 地址条目的物理地址。 此函数刷新与接口上的 IP 地址匹配的任何现有邻居条目,然后通过发送 IPv4 地址 (的 ARP 请求或 IPv6 地址的邻居请求来解析 MAC) 地址的物理地址。 如果指定 SourceAddress 参数, ResolveIpNetEntry2 函数将选择要发送请求的具有此源 IP 地址的接口。 如果在此参数) 中传递 NULL (未指定 SourceAddress 参数, ResolveIpNetEntry2 函数将自动选择要发送请求的最佳接口。

Row 参数指向的 MIB_IPNET_ROW2 结构中的 Address 成员必须初始化为有效的 IPv4 或 IPv6 地址和系列。 此外,指向 Row 参数的 MIB_IPNET_ROW2 结构中至少有一个成员必须初始化到接口:InterfaceLuidInterfaceIndex

字段按上面列出的顺序使用。 因此,如果指定了 InterfaceLuid ,则此成员用于确定要添加单播 IP 地址的接口。 如果未为 InterfaceLuid 成员设置值 (此成员的值设置为零) ,则接下来使用 InterfaceIndex 成员来确定接口。

如果 Row 参数指向的MIB_IPNET_ROW2Address 成员中传递的 IP 地址是接口上现有邻居 IP 地址的副本,则 ResolveIpNetEntry2 函数将在解析 IP 地址之前刷新现有条目。

当调用成功时,ResolveIpNetEntry2 在输出中检索邻居 IP 地址的其他属性,并填写 Row 参数指向的MIB_IPNET_ROW2结构。 Row 参数指向的 MIB_IPNET_ROW2 结构中的 PhysicalAddressPhysicalAddressLength 成员将初始化为有效的物理地址。

要求

要求
最低受支持的客户端 Windows Vista [仅限桌面应用]
最低受支持的服务器 Windows Server 2008 [仅限桌面应用]
目标平台 Windows
标头 netioapi.h (包括 Iphlpapi.h)
Library Iphlpapi.lib
DLL Iphlpapi.dll

另请参阅

CreateIpNetEntry2

DeleteIpNetEntry2

FlushIpNetTable2

GetIpNetEntry2

GetIpNetTable2

MIB_IPNET_ROW2

MIB_IPNET_TABLE2

SOCKADDR_INET

SetIpNetEntry2