SetIpForwardEntry2 関数 (netioapi.h)

SetIpForwardEntry2 関数は、ローカル コンピューター上の IP ルート エントリのプロパティを設定します。

構文

IPHLPAPI_DLL_LINKAGE _NETIOAPI_SUCCESS_ NETIOAPI_API SetIpForwardEntry2(
  [in] const MIB_IPFORWARD_ROW2 *Route
);

パラメーター

[in] Route

IP ルート エントリの MIB_IPFORWARD_ROW2 構造体エントリへのポインター。 MIB_IPFORWARD_ROW2DestinationPrefix メンバーは有効な IP 宛先プレフィックスに設定する必要があり、MIB_IPFORWARD_ROW2NextHop メンバーは有効な IP アドレス ファミリと IP アドレスに設定する必要があり、MIB_IPFORWARD_ROW2InterfaceLuid または InterfaceIndex メンバーを指定する必要があります。

戻り値

関数が成功した場合、戻り値はNO_ERROR。

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

リターン コード 説明
ERROR_ACCESS_DENIED
アクセスが拒否されました。 このエラーは、次のようないくつかの条件で返されます。ユーザーがローカル コンピューターで必要な管理特権を持っていないか、アプリケーションが組み込みの管理者 (RunAs 管理者) として拡張シェルで実行されていません。
ERROR_INVALID_PARAMETER
無効なパラメーターが関数に渡されました。 このエラーは、Route パラメーターに NULL ポインターが渡された場合、Route パラメーターが指すMIB_IPFORWARD_ROW2DestinationPrefix メンバーが指定されなかった場合Route パラメーターが指すMIB_IPFORWARD_ROW2NextHop メンバーが指定されていない場合、または Route パラメーターが指すMIB_IPFORWARD_ROW2の InterfaceLuid メンバーまたは InterfaceIndex メンバーの両方が返されます。パラメーターが指定されていません。
ERROR_NOT_FOUND
指定したインターフェイスが見つかりませんでした。 Route パラメーターが指すMIB_IPFORWARD_ROW2の InterfaceLuid メンバーまたは InterfaceIndex メンバーによって指定されたネットワーク インターフェイスが見つからなかった場合、このエラーが返されます。
その他
FormatMessage を使用して、返されたエラーのメッセージ文字列を取得します。

注釈

SetIpForwardEntry2 関数は、Windows Vista 以降で定義されています。

SetIpForwardEntry2 関数は、ローカル コンピューター上の既存の IP ルート エントリのプロパティを設定するために使用されます。

Route パラメーターが指すMIB_IPFORWARD_ROW2構造体の DestinationPrefix メンバーは、有効な IP アドレス プレフィックスとファミリに初期化する必要があります。 Route パラメーターが指すMIB_IPFORWARD_ROW2構造体の NextHop メンバーは、有効な IP アドレスとファミリに初期化する必要があります。 さらに、Route パラメーターを指すMIB_IPFORWARD_ROW2構造体の少なくとも 1 つのメンバーをインターフェイスに初期化する必要があります。 InterfaceLuid または InterfaceIndex

フィールドは、上記の順序で使用されます。 したがって、 InterfaceLuid が指定されている場合、このメンバーを使用して、ユニキャスト IP アドレスを追加するインターフェイスが決定されます。 InterfaceLuid メンバーに値が設定されていない場合 (このメンバーの値が 0 に設定されました)、InterfaceIndex メンバーが次に使用されてインターフェイスが決定されます。

Route パラメーターによって指されるMIB_IPFORWARD_ROW2構造の Metric メンバーで指定されたルート メトリック オフセットは、完全なルート メトリックの一部のみを表します。 完全なメトリックは、関連付けられたインターフェイスのMIB_IPINTERFACE_ROW構造の Metric メンバーで指定されたインターフェイス メトリックに追加された、このルート メトリック オフセットの組み合わせです。 アプリケーションは、 GetIpInterfaceEntry 関数を呼び出すことによってインターフェイス メトリックを取得できます。

SetIpForwardEntry2 関数が呼び出されると、Row が指すMIB_IPFORWARD_ROW2構造体の Age メンバーと Origin メンバーは無視されます。 これらのメンバーはネットワーク スタックによって設定され、 SetIpForwardEntry2 関数を使用して変更することはできません。

Route パラメーターが指すMIB_IPFORWARD_ROW2DestinationPrefix メンバーと NextHop メンバーが、指定されたインターフェイスの IP ルート エントリと一致しない場合、SetIpForwardEntry2 関数は失敗します。

SetIpForwardEntry2 関数は、Administrators グループのメンバーとしてログオンしているユーザーのみが呼び出すことができます。 Administrators グループのメンバーではないユーザーが SetIpForwardEntry2 を呼び出すと、関数呼び出しは失敗し、 ERROR_ACCESS_DENIED が返されます。

SetIpForwardEntry2 関数は、Windows Vista 以降のユーザー アカウント制御 (UAC) が原因で失敗する可能性もあります。 この関数を含むアプリケーションが、組み込みの Administrator 以外の Administrators グループのメンバーとしてログオンしているユーザーによって実行された場合、 requestedExecutionLevel が requireAdministrator に設定されたマニフェスト ファイルでアプリケーションがマークされていない限り、この呼び出しは失敗します。 アプリケーションにこのマニフェスト ファイルがない場合、組み込みの Administrator 以外の Administrators グループのメンバーとしてログオンしたユーザーは、この関数を成功させるために、組み込みの Administrator (RunAs 管理者) として拡張シェルでアプリケーションを実行する必要があります。

要件

要件
サポートされている最小のクライアント Windows Vista [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows Server 2008 [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー netioapi.h (Iphlpapi.h を含む)
Library Iphlpapi.lib
[DLL] Iphlpapi.dll

こちらもご覧ください

CreateIpForwardEntry2

DeleteIpForwardEntry2

GetBestRoute2

GetIpForwardEntry2

GetIpForwardTable2

GetIpInterfaceEntry

InitializeIpForwardEntry

MIB_IPFORWARD_ROW2

MIB_IPFORWARD_TABLE2

MIB_IPINTERFACE_ROW

NotifyRouteChange2