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、オプション]
    IP ルート エントリに関連付けられているネットワーク インターフェイスを指定するローカル一意識別子 (LUID)。

  • InterfaceIndex [in]
    IP ルート エントリに関連付けられているネットワーク インターフェイスを指定するローカル インデックス値。 このインデックス値は、ネットワーク アダプターを無効にしてから有効にした場合、またはその他の状況で変更する可能性があるため、この値は永続的ではありません。

  • SourceAddress [in、オプション]
    送信元 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

その関数に渡された無効なパラメーター。 このエラーは、DestinationAddressBestSourceAddress、または BestRoute パラメーターで NULL ポインターが渡された場合に返されます。 このエラーは、InterfaceLuid パラメーターと InterfaceIndex パラメーターの両方が指定されていない場合にも返されます。 このエラーは、DestinationAddress パラメーターで IPv4 または IPv6 アドレスとファミリが指定されていない場合にも返されます。

STATUS_NOT_FOUND

指定されたインターフェイスが見つかりませんでした。 このエラーは、InterfaceLuid または InterfaceIndex パラメーターで指定されているネットワーク インターフェイスが見つからなかった場合に返されます。

STATUS_NOT_SUPPORTED

要求はサポートされていません。 このエラーは、IPv4 スタックがローカル コンピューター上に存在せず、IPv4 アドレスとファミリが DestinationAddress パラメーターで指定された場合、またはローカル コンピューターに IPv6 スタックがなく、DestinationAddress パラメーターに IPv4 アドレスとファミリが指定されている場合に返されます。

その他

FormatMessage 関数を使用して、返されたエラーのメッセージ文字列を取得します。

解説

GetBestRoute2 関数は、送信元 IP アドレスから宛先 IP アドレスへの最適なルートの MIB_IPFORWARD_ROW2 構造体エントリを取得するために使用されます。

入力時に、ドライバーは次のパラメーターを初期化する必要があります。

  • DestinationAddress
    有効な IPv4 または IPv6 アドレスとファミリに設定します。

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

さらに、入力時に、ドライバーは、優先 IPv4 または IPv6 アドレスとファミリに SourceAddress パラメーターを初期化できます。

出力時に、呼び出しが成功すると、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