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。
如果函数失败,则返回值为以下错误代码之一。
返回代码 | 说明 |
---|---|
|
向该函数传递了无效参数。 如果在 DestinationAddress、BestSourceAddress 或 BestRoute 参数中传递 NULL 指针,则返回此错误。 如果 DestinationAddress 参数未指定 IPv4 或 IPv6 地址和系列,也会返回此错误。 |
|
找不到指定的接口。 如果找不到 InterfaceLuid 或 InterfaceIndex 参数指定的网络接口,则返回此错误。 |
|
不支持该请求。 如果本地计算机上没有 IPv4 堆栈,并且 DestinationAddress 参数中指定了 IPv4 地址和系列,则返回此错误。 如果本地计算机上没有 IPv6 堆栈,并且 DestinationAddress 参数中指定了 IPv6 地址和系列,也会返回此错误。 |
|
使用 FormatMessage 获取返回错误的消息字符串。 |
注解
GetBestRoute2 函数在 Windows Vista 及更高版本上定义。
GetBestRoute2 函数用于检索从源 IP 地址到目标 IP 地址的最佳路由的MIB_IPFORWARD_ROW2结构条目。
输入时, DestinationAddress 参数必须初始化为有效的 IPv4 或 IPv6 地址和系列。 输入时, SourceAddress 参数可以初始化为首选的 IPv4 或 IPv6 地址和系列。 此外,必须至少初始化以下参数之一: InterfaceLuid 或 InterfaceIndex。
参数按上面列出的顺序使用。 因此,如果指定了 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 |