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]
MIB_IPFORWARD_ROW2 結構的指標,用於從來源IP位址到目的地IP位址的最佳路由。BestSourceAddress [out]
最佳來源IP位址的指標。
傳回值
如果函式成功,GetBestRoute2 會傳回STATUS_SUCCESS。
如果函式失敗,GetBestRoute2 會傳回下列其中一個錯誤碼:
傳回碼 | 描述 |
---|---|
STATUS_INVALID_PARAMETER | 無效的參數已傳遞至函式。 如果在 DestinationAddress、BestSourceAddress或 BestRoute 參數中傳遞 NULL 指標,就會傳回此錯誤。 如果未指定 interfaceLuid 和 InterfaceIndex 參數,也會傳回此錯誤。 如果 DestinationAddress 參數未指定 IPv4 或 IPv6 位址和系列,也會傳回此錯誤 |
STATUS_NOT_FOUND | 找不到指定的介面。 如果找不到 InterfaceLuid 或 InterfaceIndex 參數指定的網路介面,就會傳回此錯誤。 |
STATUS_NOT_SUPPORTED | 不支援要求。 如果本機計算機上沒有IPv4堆棧,且在 DestinationAddress 參數中指定了 IPv4 位址和系列,或本機計算機上沒有 IPv6 堆棧,且已在 DestinationAddress 參數中指定 IPv4 位址和系列,則會傳回此錯誤。 |
其他 | 使用 FormatMessage 函式取得傳回錯誤的訊息字串。 |
言論
GetBestRoute2 函式可用來擷取從來源 IP 位址到目的地 IP 位址的最佳路由 MIB_IPFORWARD_ROW2 結構專案。
在輸入時,驅動程式必須初始化下列參數。
DestinationAddress
設定為有效的 IPv4 或 IPv6 位址和系列。InterfaceLuid 或 InterfaceIndex
這些參數會依照稍早所列的順序使用。 因此,如果指定 InterfaceLuid,則會使用此參數來判斷介面。 如果未為 InterfaceLuid 成員設定任何值(此參數的值設定為零),則接下來會使用 interfaceIndex 參數來判斷介面。
此外,在輸入時,驅動程式可以將 SourceAddress 參數初始化為慣用的 IPv4 或 IPv6 位址和系列。
在輸出中,當呼叫成功時,GetBestRoute2 從目的地 IP 位址的來源 IP 位址擷取最佳路由的MIB_IPFORWARD_ROW2結構。
要求
目標平臺 |
通用 |
版本 |
可在 Windows Vista 和更新版本的 Windows作系統中使用。 |
頁眉 |
Netioapi.h (包括 Netioapi.h) |
圖書館 |
Netio.lib |
IRQL |
< DISPATCH_LEVEL |