次の方法で共有


RtmCreateDestEnum 関数 (rtmv2.h)

RtmCreateDestEnum 関数は、ルーティング テーブル内の宛先の列挙を開始します。 クライアントは、1 つ以上のビューまたはすべてのビューの宛先を列挙できます。

構文

DWORD RtmCreateDestEnum(
  [in]  RTM_ENTITY_HANDLE RtmRegHandle,
  [in]  RTM_VIEW_SET      TargetViews,
  [in]  RTM_ENUM_FLAGS    EnumFlags,
  [in]  PRTM_NET_ADDRESS  NetAddress,
  [in]  ULONG             ProtocolId,
  [out] PRTM_ENUM_HANDLE  RtmEnumHandle
);

パラメーター

[in] RtmRegHandle

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

[in] TargetViews

列挙体を作成するときに使用するビューのセットを指定します。 次のフラグが使用されます。

定数 説明
RTM_VIEW_MASK_ANY
すべてのビューから変換先を返します。 これが既定値です。
RTM_VIEW_MASK_UCAST
ユニキャスト ビューから宛先を返します。
RTM_VIEW_MASK_MCAST
マルチキャスト ビューから宛先を返します。

[in] EnumFlags

列挙に含める宛先を指定します。 2 セットのフラグが使用されます。各セットから 1 つのフラグを使用します (たとえば、RTM_ENUM_ALL_DESTSとRTM_ENUM_STARTを使用します)。

定数 説明
RTM_ENUM_ALL_DESTS
すべての宛先を返します。
RTM_ENUM_OWN_DESTS
クライアントが、指定されたビューのいずれかで宛先への最適なルートを所有する宛先を返します。
 
定数 説明
RTM_ENUM_NEXT
指定したアドレス/マスクの長さ (10/8 など) から始まる宛先を列挙します。 列挙体はルーティング テーブルの末尾まで続きます。
RTM_ENUM_RANGE
アドレス/マスクの長さ (10/8 など) で指定された範囲内の宛先を列挙します。
RTM_ENUM_START
0/0 から始まる宛先を列挙します。 NetAddressNULL を指定します。

[in] NetAddress

列挙体の開始アドレスを含む RTM_NET_ADDRESS 構造体へのポインター。 EnumFlags にRTM_ENUM_STARTが含まれている場合は NULL を指定します

[in] ProtocolId

RtmGetEnumDests 関数によって返される最適なルート情報を決定するために使用されるプロトコル識別子を指定します。 ProtocolID は検索条件の一部ではありません。 ルーティング テーブル マネージャーは、この識別子を使用して、返すルート情報を決定します (たとえば、クライアントが RIP プロトコル識別子を指定した場合、非 RIP ルートが宛先への最適なルートである場合でも、最適な RIP ルートが返されます)。

ルートを所有するプロトコルに関係なく、ルートを返すRTM_BEST_PROTOCOLを指定します。 呼び出し元のプロトコルに最適なルートを返すには、RTM_THIS_PROTOCOLを指定します。

[out] RtmEnumHandle

入力では、 RtmEnumHandleNULL へのポインターです。

出力時に、 RtmEnumHandle は列挙へのハンドルへのポインターを受け取ります。 RtmGetEnumDests、RtmReleaseDestsRtmDeleteEnumHandle に対する後続のすべての呼び出しで、このハンドルを使用します。

戻り値

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

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

意味
ERROR_INVALID_PARAMETER
パラメーターに正しくない情報が含まれています。
ERROR_NOT_ENOUGH_MEMORY
この操作を完了するのに十分なメモリがありません。
ERROR_NOT_SUPPORTED
指定されたビューのうち 1 つ以上はサポートされていません。

注釈

EnumFlags にRTM_ENUM_RANGEが含まれている場合は、NetAddress を使用して、列挙するルーティング テーブルの範囲を指定します。 たとえば、クライアントが NetAddress を 10/8 に設定した場合、10.0.0.0/8 から 10.255.255.255/32 の範囲の宛先が返されます。

列挙ハンドルが不要になったら、 RtmDeleteEnumHandle を呼び出して解放します。

この関数を使用するサンプル コードについては、「 すべての宛先を列挙する」を参照してください。

要件

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

こちらもご覧ください

RTM_NET_ADDRESS

RtmDeleteEnumHandle

RtmGetEnumDests

RtmReleaseDests