getBestRoute2 函数 (netioapi.h)

GetBestRoute2 函数检索本地计算机上的 IP 路由条目,以获取到指定目标 IP 地址的最佳路由。

语法

IPHLPAPI_DLL_LINKAGE _NETIOAPI_SUCCESS_ NETIOAPI_API GetBestRoute2(
  [in, optional] NET_LUID            *InterfaceLuid,
  [in]           NET_IFINDEX         InterfaceIndex,
  [in]           const SOCKADDR_INET *SourceAddress,
  [in]           const SOCKADDR_INET *DestinationAddress,
  [in]           ULONG               AddressSortOptions,
  [out]          PMIB_IPFORWARD_ROW2 BestRoute,
  [out]          SOCKADDR_INET       *BestSourceAddress
);

参数

[in, optional] InterfaceLuid

本地唯一标识符 (LUID) 指定与 IP 路由条目关联的网络接口。

[in] InterfaceIndex

用于指定与 IP 路由条目关联的网络接口的本地索引值。 当禁用然后启用网络适配器时,或者在其他情况下,此索引值可能会更改,不应被视为永久性。

[in] SourceAddress

源 IP 地址。 此参数可以省略并作为 NULL 指针传递。

[in] DestinationAddress

目标 IP 地址。

[in] AddressSortOptions

影响 IP 地址排序方式的一组选项。 当前未使用此参数。

[out] BestRoute

指向 MIB_IPFORWARD_ROW2 的指针,用于从源 IP 地址到目标 IP 地址的最佳路由。

[out] BestSourceAddress

指向最佳源 IP 地址的指针。

返回值

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

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

返回代码 说明
ERROR_INVALID_PARAMETER
向该函数传递了无效参数。 如果在 DestinationAddress、BestSourceAddressBestRoute 参数中传递 NULL 指针,则返回此错误。 如果 DestinationAddress 参数未指定 IPv4 或 IPv6 地址和系列,也会返回此错误。
ERROR_FILE_NOT_FOUND
找不到指定的接口。 如果找不到 InterfaceLuidInterfaceIndex 参数指定的网络接口,则返回此错误。
ERROR_NOT_SUPPORTED
不支持该请求。 如果本地计算机上没有 IPv4 堆栈,并且 DestinationAddress 参数中指定了 IPv4 地址和系列,则返回此错误。 如果本地计算机上没有 IPv6 堆栈,并且 DestinationAddress 参数中指定了 IPv6 地址和系列,也会返回此错误。
其他
使用 FormatMessage 获取返回错误的消息字符串。

注解

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

GetBestRoute2 函数用于检索从源 IP 地址到目标 IP 地址的最佳路由的MIB_IPFORWARD_ROW2结构条目。

输入时, DestinationAddress 参数必须初始化为有效的 IPv4 或 IPv6 地址和系列。 输入时, SourceAddress 参数可以初始化为首选的 IPv4 或 IPv6 地址和系列。 此外,必须至少初始化以下参数之一: InterfaceLuidInterfaceIndex

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

当调用成功时, GetBestRoute2 在输出中检索并 MIB_IPFORWARD_ROW2 结构,以便从源 IP 地址到目标 IP 地址的最佳路由。

要求

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

另请参阅

CreateIpForwardEntry2

DeleteIpForwardEntry2

GetIpForwardEntry2

GetIpForwardTable2

InitializeIpForwardEntry

MIB_IPFORWARD_ROW2

MIB_IPFORWARD_TABLE2

NotifyRouteChange2

SetIpForwardEntry2