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

IP ルート エントリに関連付けられているネットワーク インターフェイスを指定するローカル一意識別子 (LUID)。

[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。

関数が失敗した場合、戻り値は次のいずれかのエラー コードになります。

リターン コード 説明
ERROR_INVALID_PARAMETER
無効なパラメーターが関数に渡されました。 このエラーは、 Null ポインターが DestinationAddressBestSourceAddress、または BestRoute パラメーターで渡された場合に返されます。 DestinationAddress パラメーターで IPv4 または IPv6 アドレスとファミリが指定されていない場合も、このエラーが返されます。
ERROR_FILE_NOT_FOUND
指定したインターフェイスが見つかりませんでした。 InterfaceLuid パラメーターまたは InterfaceIndex パラメーターで指定されたネットワーク インターフェイスが見つからなかった場合、このエラーが返されます。
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 アドレスとファミリに初期化できます。 さらに、 InterfaceLuid または InterfaceIndex の少なくとも 1 つのパラメーターを初期化する必要があります。

パラメーターは、上記の順序で使用されます。 したがって、 InterfaceLuid が指定されている場合は、このメンバーを使用してインターフェイスが決定されます。 InterfaceLuid メンバーに値が設定されていない場合 (このメンバーの値が 0 に設定されました)、InterfaceIndex メンバーが次に使用されてインターフェイスが決定されます。

呼び出しが成功すると、 GetBestRoute2 は送信元 IP アドレスから宛先 IP アドレスから最適なルート の構造を 取得してMIB_IPFORWARD_ROW2します。

要件

要件
サポートされている最小のクライアント 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