Поделиться через


Функция RtmCreateDestEnum (rtmv2.h)

Функция RtmCreateDestEnum запускает перечисление назначений в таблице маршрутизации. Клиент может перечислять назначения для одного или нескольких представлений или для всех представлений.

Синтаксис

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

Указывает, какие назначения следует включить в перечисление. Используются два набора флагов; используйте по одному флагу из каждого набора (например, 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. Укажите значение NULL для NetAddress.

[in] NetAddress

Указатель на структуру RTM_NET_ADDRESS , содержащую начальный адрес перечисления. Укажите значение NULL , если EnumFlags содержит RTM_ENUM_START.

[in] ProtocolId

Указывает идентификатор протокола, используемый для определения наилучших сведений о маршруте, возвращаемых функцией RtmGetEnumDests . ProtocolID не является частью условий поиска. Диспетчер таблиц маршрутизации использует этот идентификатор для определения возвращаемых сведений о маршруте (например, если клиент указывает идентификатор протокола RIP, возвращается лучший маршрут RIP, даже если маршрут, отличный от RIP, является лучшим маршрутом к месту назначения).

Укажите RTM_BEST_PROTOCOL возвращать маршрут независимо от того, какой протокол ему принадлежит. Укажите RTM_THIS_PROTOCOL, чтобы вернуть оптимальный маршрут для протокола вызова.

[out] RtmEnumHandle

На входных данных RtmEnumHandle является указателем на NULL.

В выходных данных RtmEnumHandle получает указатель на дескриптор перечисления. Используйте этот дескриптор во всех последующих вызовах RtmGetEnumDests, RtmReleaseDests и RtmDeleteEnumHandle.

Возвращаемое значение

Если функция выполнена успешно, возвращаемое значение будет NO_ERROR.

Если функция завершается сбоем, возвращается один из следующих кодов ошибок.

Значение Значение
ERROR_INVALID_PARAMETER
Параметр содержит неверные сведения.
ERROR_NOT_ENOUGH_MEMORY
Недостаточно памяти для выполнения этой операции.
ERROR_NOT_SUPPORTED
Одно или несколько указанных представлений не поддерживаются.

Комментарии

Если EnumFlags содержит RTM_ENUM_RANGE, используйте NetAddress , чтобы указать диапазон таблицы маршрутизации для перечисления. Например, если клиент устанавливает для NetAddress значение 10/8, возвращаются назначения в диапазоне от 10.0.0.0/8 до 10.255.255.255/32.

Если дескриптор перечисления больше не требуется, отпустите его, вызвав RtmDeleteEnumHandle.

Пример кода, использующий эту функцию, см. в разделе Перечисление всех назначений.

Требования

Требование Значение
Минимальная версия клиента Ни одна версия не поддерживается
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header rtmv2.h
Библиотека Rtm.lib
DLL Rtm.dll

См. также раздел

RTM_NET_ADDRESS

RtmDeleteEnumHandle

RtmGetEnumDests

RtmReleaseDests