共用方式為


GetBestRoute2 函式

GetBestRoute2函式會擷取本機電腦上的 IP 路由專案,以獲得最佳目的地 IP 位址的路由。

語法

NETIOAPI_API GetBestRoute2(
  _In_opt_       NET_LUID            *InterfaceLuid,
  _In_           NET_IFINDEX         InterfaceIndex,
  _In_opt_ const SOCKADDR_INET       *SourceAddress,
  _In_     const SOCKADDR_INET       *DestinationAddress,
  _In_           ULONG               AddressSortOptions,
  _Out_          PMIB_IPFORWARD_ROW2 BestRoute,
  _Out_          SOCKADDR_INET       *BestSourceAddress
);

參數

  • InterfaceLuid [in, optional]
    本機唯一識別碼 (LUID) ,以指定與 IP 路由專案相關聯的網路介面。

  • InterfaceIndex [in]
    用來指定與 IP 路由專案相關聯之網路介面的本機索引值。 當網路介面卡停用後再啟用或在其他情況下,此索引值可能會變更,因此此值不會持續發生。

  • SourceAddress [in, optional]
    來源 IP 位址。 您的驅動程式可以省略此參數,並傳遞 Null 指標。

  • DestinationAddress [in]
    目的地 IP 位址。

  • AddressSortOptions [in]
    一組會影響 IP 位址排序方式的選項。 目前未使用這個參數。

  • BestRoute [out]
    從來源 IP 位址到目的地 IP 位址的最佳路由 之MIB_IPFORWARD_ROW2 結構的指標。

  • BestSourceAddress [out]
    最佳來源 IP 位址的指標。

傳回值

如果函式成功,GetBestRoute2會傳回STATUS_SUCCESS。

如果函式失敗, GetBestRoute2 會傳回下列其中一個錯誤碼:

傳回碼 描述
STATUS_INVALID_PARAMETER

不正確參數已傳遞至 函式。 如果在DestinationAddressBestSourceAddressBestRoute參數中傳遞Null指標,就會傳回此錯誤。 如果未指定 InterfaceLuidInterfaceIndex 參數,也會傳回此錯誤。 如果 DestinationAddress 參數未指定 IPv4 或 IPv6 位址和系列,也會傳回此錯誤

STATUS_NOT_FOUND

找不到指定的介面。 如果找不到 InterfaceLuidInterfaceIndex 參數指定的網路介面,就會傳回此錯誤。

STATUS_NOT_SUPPORTED

不支援此要求。 如果本機電腦上沒有 IPv4 堆疊,而且 在 DestinationAddress 參數中指定了 IPv4 位址和系列,或者沒有 IPv6 堆疊位於本機電腦,且 DestinationAddress 參數中指定了 IPv4 位址和系列,則會傳回此錯誤。

其他

使用 FormatMessage 函式來取得傳回錯誤的訊息字串。

備註

GetBestRoute2函式可用來擷取MIB_IPFORWARD_ROW2結構專案,以取得從來源 IP 位址到目的地 IP 位址的最佳路由。

在輸入時,您的驅動程式必須初始化下列參數。

  • DestinationAddress
    設定為有效的 IPv4 或 IPv6 位址和系列。

  • InterfaceLuidInterfaceIndex
    這些參數會依照稍早所列的順序使用。 因此,如果指定 InterfaceLuid ,則會使用此參數來判斷介面。 如果未為 InterfaceLuid 成員設定任何值, (此參數的值設定為零) ,則接著會使用 InterfaceIndex 參數來判斷介面。

此外,在輸入時,驅動程式可以將 SourceAddress 參數初始化為慣用的 IPv4 或 IPv6 位址和系列。

在輸出中,當呼叫成功時, GetBestRoute2 會從目的地 IP 位址的來源 IP 位址擷取MIB_IPFORWARD_ROW2結構。

規格需求

目標平台

普遍

版本

可在 Windows Vista 和更新版本的 Windows 作業系統中使用。

標頭

Netioapi.h (包含 Netioapi.h)

程式庫

Netio.lib

IRQL

< DISPATCH_LEVEL

另請參閱

CreateIpForwardEntry2

DeleteIpForwardEntry2

GetIpForwardEntry2

GetIpForwardTable2

InitializeIpForwardEntry

MIB_IPFORWARD_ROW2

MIB_IPFORWARD_TABLE2

NotifyRouteChange2

SetIpForwardEntry2