RtmAddNextHop 関数 (rtmv2.h)
RtmAddNextHop 関数は、新しい次ホップ エントリを追加するか、既存の次ホップ エントリをクライアントの次ホップ リストに更新します。 次ホップが既に存在する場合、ルーティング テーブル マネージャーは次ホップへのハンドルを返します。 このハンドルを使用して、ルートを追加または更新するときに宛先への次ホップを指定できます。
構文
DWORD RtmAddNextHop(
[in] RTM_ENTITY_HANDLE RtmRegHandle,
[in] PRTM_NEXTHOP_INFO NextHopInfo,
[in, out] PRTM_NEXTHOP_HANDLE NextHopHandle,
[out] PRTM_NEXTHOP_CHANGE_FLAGS ChangeFlags
);
パラメーター
[in] RtmRegHandle
RtmRegisterEntity の以前の呼び出しから取得したクライアントへのハンドル。
[in] NextHopInfo
追加または更新する次ホップを識別する情報を含む構造体へのポインター。 NextHopOwner メンバーと State メンバーは無視されます。これらのメンバーは、ルーティング テーブル マネージャーによって設定されます。 Flags メンバーには、次のいずれかの値を指定できます。
フラグ | 説明 |
---|---|
|
この次ホップは、直接到達できないリモート宛先を指します。 完全なパスを取得するには、クライアントで再帰参照を実行する必要があります。 |
|
このフラグは将来利用するために予約されています。 |
[in, out] NextHopHandle
クライアントにハンドルがある場合 (クライアントは次ホップを更新しています): 入力時、 NextHopHandle は次ホップ ハンドルへのポインターです。 出力時、 NextHopHandle は変更されません。
クライアントにハンドルが存在せず、ハンドルを返す必要がある場合 (クライアントが次ホップを追加または更新しています): 入力時に、 NextHopHandle は NULL へのポインターです。 出力時に、 NextHopHandle は次ホップ ハンドルへのポインターを受け取ります。 NextHopInfo の値は、更新する次ホップを識別するために使用されます。
ハンドルを返す必要がない場合 (クライアントが次ホップを追加または更新しています): 入力時に NextHopHandle は NULL です。 NextHopInfo の値は、更新する次ホップを識別するために使用されます。
[out] ChangeFlags
入力時に、 ChangeFlags は RTM_NEXTHOP_CHANGE_FLAGS データ型へのポインターです。
出力時に、 ChangeFlags は 次ホップが追加されたか更新されたかを示すフラグを受け取ります。 ChangeFlags が 0 の場合、次ホップが更新されました。ChangeFlags がRTM_NEXTHOP_CHANGE_NEW場合は、次ホップが追加されました。
戻り値
関数が成功した場合、戻り値はNO_ERROR。
関数が失敗した場合、戻り値は次のいずれかのエラー コードになります。
値 | 説明 |
---|---|
|
呼び出し元のクライアントは、この次ホップを所有していません。 |
|
この操作を完了するのに十分なメモリがありません。 |
解説
NextHopHandle が NULL 以外のハンドルを指している場合、ハンドルで指定された次ホップが更新されます。 それ以外の場合は、 NextHopInfo で指定されたアドレスを検索します。 次ホップが見つかった場合は、更新されます。 一致するものが見つからない場合は、新しい次ホップが追加されます。
ハンドルが返された場合は、 RtmReleaseNextHops を呼び出して不要になったときにハンドルを解放します。
要件
サポートされている最小のクライアント | サポートなし |
サポートされている最小のサーバー | Windows 2000 Server [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | rtmv2.h |
Library | Rtm.lib |
[DLL] | Rtm.dll |