ResolveIpNetEntry2 函数

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

语法

NETIOAPI_API ResolveIpNetEntry2(
  _Inout_        PMIB_IPNET_ROW2 Row,
  _In_opt_ const SOCKADDR_INET   *SourceAddress
);

参数

  • [in, out]
    指向邻居 IP 地址条目的 MIB_IPNET_ROW2 结构条目的指针。 成功返回后,此结构将更新为邻居 IP 地址的属性。

  • SourceAddress [in, 可选]
    指向可选源 IP 地址的指针,该地址用于选择接口以发送相邻 IP 地址条目的请求。

返回值

如果函数成功,则 ResolveIpNetEntry2 返回STATUS_SUCCESS。

如果函数失败,ResolveIpNetEntry2 返回以下错误代码之一:

返回代码 描述
STATUS_BAD_NETWORK_NAME

找不到网络名称。 如果无法访问具有邻居 IP 地址的网络,则返回此错误。

STATUS_INVALID_PARAMETER

将无效参数传递给函数。 如果在 Row 参数中传递 NULL 指针,则返回此错误: Address 成员 MIB_IPNET_ROW2 结构的成员, 参数指向的地址未设置为有效的 IPv4 或 IPv6 地址,或者未指定 InterfaceLuidInterfaceIndex MIB_IPNET_ROW2 成员。 如果在 地址 成员中传递环回地址,也会返回此错误。

STATUS_NOT_FOUND

找不到指定的接口。 如果函数找不到 InterfaceLuidInterfaceIndex 参数指向的MIB_IPNET_ROW2结构的成员指定的网络接口,则返回此错误。

STATUS_NOT_SUPPORTED

不支持该请求。 如果没有 IPv4 堆栈位于本地计算机上,并且MIB_IPNET_ROW2结构 参数指向的 地址 成员中指定了 IPv4 地址,或者 地址 成员中指定了 IPv6 地址,则返回此错误。

其他

使用 FormatMessage 函数获取返回的错误的消息字符串。

言论

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

驱动程序必须初始化 参数指向的 MIB_IPNET_ROW2 结构的以下成员。

  • 地址
    设置为有效的 IPv4 或 IPv6 地址和系列。

  • InterfaceLuidInterfaceIndex
    这些成员按前面列出的顺序使用。 因此,如果指定了 InterfaceLuid,则使用此成员来确定接口。 如果未为 InterfaceLuid 成员设置值(此成员的值设置为零),则接下来使用 InterfaceIndex 成员来确定接口。

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

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

要求

目标平台

通用

版本

在 Windows Vista 和更高版本的 Windows作系统中可用。

页眉

Netioapi.h (包括 Netioapi.h)

图书馆

Netio.lib

IRQL

< DISPATCH_LEVEL

另请参阅

CreateIpNetEntry2

DeleteIpNetEntry2

FlushIpNetTable2

GetIpNetEntry2

GetIpNetTable2

MIB_IPNET_ROW2

MIB_IPNET_TABLE2

SetIpNetEntry2