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 | その関数に渡された無効なパラメーター。 このエラーは、DestinationAddress、BestSourceAddress、または 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 |