次の方法で共有


RtmAddRouteToDest 関数 (rtmv2.h)

RtmAddRouteToDest 関数は、ルーティング テーブルに新しいルートを追加するか、ルーティング テーブル内の既存のルートを更新します。 最適なルートが変更されると、変更通知が生成されます。

構文

DWORD RtmAddRouteToDest(
  [in]      RTM_ENTITY_HANDLE       RtmRegHandle,
  [in, out] PRTM_ROUTE_HANDLE       RouteHandle,
  [in]      PRTM_NET_ADDRESS        DestAddress,
  [in]      PRTM_ROUTE_INFO         RouteInfo,
  [in]      ULONG                   TimeToLive,
  [in]      RTM_ROUTE_LIST_HANDLE   RouteListHandle,
  [in]      RTM_NOTIFY_FLAGS        NotifyType,
  [in]      RTM_NOTIFY_HANDLE       NotifyHandle,
  [in, out] PRTM_ROUTE_CHANGE_FLAGS ChangeFlags
);

パラメーター

[in] RtmRegHandle

RtmRegisterEntity の以前の呼び出しから取得したクライアントへのハンドル。

[in, out] RouteHandle

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

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

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

[in] DestAddress

ルートが追加または更新される宛先ネットワーク アドレスへのポインター。

[in] RouteInfo

追加または更新するルート情報へのポインター。

[in] TimeToLive

ルートの有効期限が切れるまでの時間をミリ秒単位で指定します。 ルートの有効期限が切れないようにするには、INFINITE を指定します。

[in] RouteListHandle

ルートを移動するルート リストへのハンドル。 このパラメーターは省略可能であり、 NULL に設定できます。

[in] NotifyType

このパラメーターを NULL に設定 します。 このパラメーターは将来使用するために予約されています。

[in] NotifyHandle

このパラメーターを NULL に設定 します。 このパラメーターは将来使用するために予約されています。

[in, out] ChangeFlags

入力時に ChangeFlags ルーティング テーブル マネージャーが新しいルートを追加するか、既存のルートを更新する必要があるかを示すRTM_ROUTE_CHANGE_FLAGSデータ型へのポインターです。

出力では、 ChangeFlags 実際に実行された変更の種類と、最適なルートが変更されたかどうかを示すフラグを受け取るRTM_ROUTE_CHANGE_FLAGSデータ型へのポインターです。 次のフラグが使用されます。

定数 説明
RTM_ROUTE_CHANGE_FIRST
2 つのルートが等しいかどうかを判断するときに、ルーティング テーブル マネージャーが RouteInfo パラメーターのネイバー メンバーをチェックしないことを示します。
RTM_ROUTE_CHANGE_NEW
ルーティング テーブル マネージャーによって返され、新しいルートが作成されたことを示します。
RTM_ROUTE_CHANGE_BEST
ルーティング テーブル マネージャーによって返され、追加または更新されたルートが最適なルートであったか、変更により新しいルートが最適なルートになったことを示します。

戻り値

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

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

意味
ERROR_ACCESS_DENIED
呼び出し元のクライアントは、このルートを所有していません。
ERROR_INVALID_HANDLE
ハンドルが正しくありません。
ERROR_INVALID_PARAMETER
パラメーターに正しくない情報が含まれています。
ERROR_NOT_ENOUGH_MEMORY
この操作を完了するのに十分なメモリがありません。
 
 

注釈

次の値が等しい場合、2 つのルートは等しいと見なされます。

  • 宛先ネットワーク
  • ルートの所有者
  • ルートを指定した近隣ノード
ルーティング テーブル マネージャーはルーティング テーブル内のルートの検索を実行する必要がないため、クライアントがルートを更新する場合は、 RouteHandle パラメーターで更新するルートにハンドルを渡す方が効率的です。

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

この関数を使用するサンプル コードについては、「 RtmAddRouteToDest を使用したルートの追加と更新」を参照してください。

要件

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

こちらもご覧ください

RTM_NET_ADDRESS

RTM_ROUTE_INFO

RtmDeleteRouteToDest

RtmGetRoutePointer

RtmHoldDestination

RtmLockRoute

RtmReleaseRoutes

RtmUpdateAndUnlockRoute