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


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

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

Синтаксис

DWORD RtmCreateRouteEnum(
  [in]  RTM_ENTITY_HANDLE RtmRegHandle,
  [in]  RTM_DEST_HANDLE   DestHandle,
  [in]  RTM_VIEW_SET      TargetViews,
  [in]  RTM_ENUM_FLAGS    EnumFlags,
  [in]  PRTM_NET_ADDRESS  StartDest,
  [in]  RTM_MATCH_FLAGS   MatchingFlags,
  [in]  PRTM_ROUTE_INFO   CriteriaRoute,
  [in]  ULONG             CriteriaInterface,
  [out] PRTM_ENUM_HANDLE  RtmEnumHandle
);

Параметры

[in] RtmRegHandle

Дескриптор клиента, полученного из предыдущего вызова RtmRegisterEntity.

[in] DestHandle

Дескриптор назначения, для которого необходимо перечислить маршруты. Этот параметр является необязательным и может иметь значение NULL; при указании ЗНАЧЕНИЯ NULL перечисляются все маршруты для всех назначений. Укажите ЗНАЧЕНИЕ NULL , если EnumFlags содержит RTM_ENUM_START.

[in] TargetViews

Задает набор представлений, используемых при создании перечисления. Используются следующие флаги.

Константа Значение
RTM_VIEW_MASK_ANY
Возвращает назначения из всех представлений. Это значение по умолчанию.
RTM_VIEW_MASK_UCAST
Возвращает назначения из одноадресного представления.
RTM_VIEW_MASK_MCAST
Возвращает назначения из представления многоадресной рассылки.

[in] EnumFlags

Указывает маршруты для включения в перечисление. Используются два набора флагов; используйте по одному флагу из каждого набора (например, RTM_ENUM_ALL_ROUTES и RTM_ENUM_START).

Константа Значение
RTM_ENUM_ALL_ROUTES
Возвращает все маршруты.
RTM_ENUM_OWN_ROUTES
Возвращает только те маршруты, которыми владеет клиент.
 
Константа Значение
RTM_ENUM_NEXT
Перечисление маршрутов, начиная с указанной длины адреса или маски (например, 10/8). Перечисление продолжается до конца таблицы маршрутизации.
RTM_ENUM_RANGE
Перечисление маршрутов в указанном диапазоне, заданном длиной адреса или маски (например, 10/8).
RTM_ENUM_START
Перечисление маршрутов, начиная с 0/0. Укажите ЗНАЧЕНИЕ NULL для NetAddress.

[in] StartDest

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

[in] MatchingFlags

Задает элементы маршрута для сопоставления. Возвращаются только маршруты, соответствующие условиям, указанным в CriteriaRoute и CriteriaInterface , если не указано иное. Используются следующие флаги.

Константа Значение
RTM_MATCH_FULL
Сопоставление маршрутов со всеми критериями.
RTM_MATCH_INTERFACE
Соответствует маршрутам, которые находятся в одном интерфейсе. Клиент может указать значение NULL для CriteriaRoute.
RTM_MATCH_NEIGHBOUR
Сопоставление маршрутов с тем же соседом.
RTM_MATCH_NEXTHOP
Соответствует маршрутам, имеющим тот же следующий прыжок.
RTM_MATCH_NONE
Не соответствует ни одному из критериев; возвращаются все маршруты для назначения. Параметр CriteriaRoute игнорируется, если задан этот флаг.
RTM_MATCH_OWNER
Сопоставление маршрутов с тем же владельцем.
RTM_MATCH_PREF
Сопоставлять маршруты с одинаковыми предпочтениями.

[in] CriteriaRoute

Указывает маршруты для перечисления. Этот параметр является необязательным и может иметь значение NULL , если matchingFlags содержит RTM_MATCH_INTERFACE или RTM_MATCH_NONE.

[in] CriteriaInterface

Указатель на ULONG , указывающий, на каких интерфейсах должны находиться маршруты. Этот параметр игнорируется, если параметр MatchingFlags не содержит RTM_MATCH_INTERFACE.

[out] RtmEnumHandle

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

В выходных данных RtmEnumHandle получает указатель на дескриптор перечисления . Используйте этот дескриптор во всех последующих вызовах RtmGetEnumRoutes, RtmReleaseRoutes и 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

RTM_ROUTE_INFO

RtmDeleteEnumHandle

RtmGetEnumRoutes

RtmReleaseRoutes