共用方式為


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

從來源IP位址到目的地IP位址的最佳路由 MIB_IPFORWARD_ROW2 指標。

[out] BestSourceAddress

最佳來源IP位址的指標。

傳回值

如果函式成功,傳回值會NO_ERROR。

如果函式失敗,傳回值就是下列其中一個錯誤碼。

傳回碼 Description
ERROR_INVALID_PARAMETER
無效的參數已傳遞至 函式。 如果在 DestinationAddressBestSourceAddressBestRoute 參數中傳遞 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)
程式庫 Iphlpapi.lib
Dll Iphlpapi.dll

另請參閱

CreateIpForwardEntry2

DeleteIpForwardEntry2

GetIpForwardEntry2

GetIpForwardTable2

InitializeIpForwardEntry

MIB_IPFORWARD_ROW2

MIB_IPFORWARD_TABLE2

NotifyRouteChange2

SetIpForwardEntry2