次の方法で共有


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 メンバーには、次のいずれかの値を指定できます。

フラグ 説明
RTM_NEXTHOP_FLAGS_REMOTE
この次ホップは、直接到達できないリモート宛先を指します。 完全なパスを取得するには、クライアントで再帰参照を実行する必要があります。
RTM_NEXTHOP_FLAGS_DOWN
このフラグは将来利用するために予約されています。

[in, out] NextHopHandle

クライアントにハンドルがある場合 (クライアントは次ホップを更新しています): 入力時、 NextHopHandle は次ホップ ハンドルへのポインターです。 出力時、 NextHopHandle は変更されません。

クライアントにハンドルが存在せず、ハンドルを返す必要がある場合 (クライアントが次ホップを追加または更新しています): 入力時に、 NextHopHandleNULL へのポインターです。 出力時に、 NextHopHandle は次ホップ ハンドルへのポインターを受け取ります。 NextHopInfo の値は、更新する次ホップを識別するために使用されます。

ハンドルを返す必要がない場合 (クライアントが次ホップを追加または更新しています): 入力時に NextHopHandleNULL ですNextHopInfo の値は、更新する次ホップを識別するために使用されます。

[out] ChangeFlags

入力時に、 ChangeFlagsRTM_NEXTHOP_CHANGE_FLAGS データ型へのポインターです。

出力時に、 ChangeFlags は 次ホップが追加されたか更新されたかを示すフラグを受け取ります。 ChangeFlags が 0 の場合、次ホップが更新されました。ChangeFlagsRTM_NEXTHOP_CHANGE_NEW場合は、次ホップが追加されました。

戻り値

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

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

説明
ERROR_ACCESS_DENIED
呼び出し元のクライアントは、この次ホップを所有していません。
ERROR_NOT_ENOUGH_MEMORY
この操作を完了するのに十分なメモリがありません。
 
 

解説

NextHopHandleNULL 以外のハンドルを指している場合、ハンドルで指定された次ホップが更新されます。 それ以外の場合は、 NextHopInfo で指定されたアドレスを検索します。 次ホップが見つかった場合は、更新されます。 一致するものが見つからない場合は、新しい次ホップが追加されます。

ハンドルが返された場合は、 RtmReleaseNextHops を呼び出して不要になったときにハンドルを解放します。

要件

   
サポートされている最小のクライアント サポートなし
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー rtmv2.h
Library Rtm.lib
[DLL] Rtm.dll

関連項目

次ホップ フラグ

RTM_NEXTHOP_INFO

RtmDeleteNextHop

RtmFindNextHop

RtmGetNextHopPointer

RtmLockNextHop

RtmReleaseNextHops