Функция RtmAddRoute

[Этот API был заменен API диспетчера таблиц маршрутизации версии 2 и не будет доступен за пределами Windows Server 2003. Приложения должны использовать API диспетчера таблиц маршрутизации версии 2.]

Функция RtmAddRoute добавляет запись маршрута или обновляет существующую запись маршрута.

Синтаксис

DWORD RtmAddRoute(
  _In_  HANDLE ClientHandle,
  _In_  PVOID  Route,
  _In_  DWORD  TimeToLive,
  _Out_ DWORD  Flags,
  _Out_ PVOID  CurBestRoute,
  _Out_ PVOID  PrevBestRoute
);

Параметры

ClientHandle [in]

Дескриптор, который идентифицирует клиента и, следовательно, протокол маршрутизации, который добавил или обновил маршрут. Получите этот дескриптор, вызвав RtmRegisterClient.

Маршрут [вход]

Указатель на структуру семейства протоколов, которая указывает новый или обновленный маршрут. Следующие поля используются диспетчером таблиц маршрутизации для обновления таблицы маршрутизации:

Значение Значение
RR_Network
Указывает номер целевой сети.
RR_InterfaceID
Указывает индекс интерфейса, через который был получен маршрут.
RR_NextHopAddress
Указывает адрес маршрутизатора следующего прыжка.
RR_FamilySpecificData
Указывает данные, относящиеся к семейству протоколов. Хотя данные прозрачны для диспетчера таблиц маршрутизации, они учитываются при сравнении маршрутов, чтобы определить, изменились ли сведения о маршрутах. Данные также используются для задания значений метрик, которые не зависят от протокола маршрутизации. Следовательно, эти данные используются для определения оптимального маршрута для целевой сети.
RR_ProtocolSpecificData
Указывает данные, относящиеся к протоколу маршрутизации, который предоставил маршрут.
RR_TimeStamp
Указывает текущее системное время. Это поле задается диспетчером таблиц маршрутизации.

TimeToLive [вход]

Указывает количество секунд, в течение которых указанный маршрут должен храниться в таблице маршрутизации. Если для этого параметра задано значение INFINITE, маршрут сохраняется до явного удаления. Текущее ограничение для TimeToLive составляет 2147483 с (более 24 дней).

Флаги [out]

Указатель на переменную DWORD . Значение этой переменной задается диспетчером таблиц маршрутизации. Значение указывает тип изменения и сведения, возвращенные в предоставленных буферах. Этот параметр является одним из следующих.

Флаги Значение
RTM_NO_CHANGE
Добавление или обновление либо не изменило ни один из важных параметров маршрута, либо затронутая запись маршрута не является лучшим маршрутом среди записей для целевой сети.
RTM_ROUTE_ADDED
Маршрут был добавлен для целевой сети. Параметр CurBestRoute указывает на сведения для добавленного маршрута.
RTM_ROUTE_CHANGED
По крайней мере один из важных параметров был изменен для оптимального маршрута к целевой сети. Ниже перечислены важные параметры.
Идентификатор протокола
Индекс интерфейса
Адрес следующего прыжка
Данные, относящиеся к семейству протоколов (включая метрики маршрутов)

Параметр PrevBestRoute указывает на сведения о маршруте, как это было до изменения. Параметр CurBestRoute указывает на текущие (то есть после изменения) сведения о маршруте.

CurBestRoute [out]

Указатель на структуру, которая получает текущие сведения о наиболее подходящем маршруте, если таковые есть. Тип структуры зависит от семейства протоколов, например IP или IPX.

Этот параметр является необязательным. Если вызывающий объект задает значение NULL для этого параметра, текущие сведения о наилучшем маршруте не возвращаются.

PrevBestRoute [out]

Указатель на структуру, которая получает предыдущие сведения о наиболее подходящем маршруте, если таковые есть. Тип структуры зависит от семейства протоколов, например IP или IPX.

Этот параметр является необязательным. Если вызывающий объект задает значение NULL для этого параметра, то предыдущие сведения о наилучшем маршруте не возвращаются.

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

Возвращаемое значение является одним из следующих кодов.

Значение Описание
NO_ERROR
Маршрут был успешно добавлен или обновлен.
ERROR_INVALID_HANDLE
Параметр дескриптора клиента не является допустимым дескриптором.
ERROR_INVALID_PARAMETER
Структура маршрута содержит недопустимый параметр.
ERROR_NO_SYSTEM_RESOURCES
Недостаточно ресурсов для выполнения операции.
ERROR_NOT_ENOUGH_MEMORY
Недостаточно памяти для выделения записи маршрута.

Комментарии

Функция создает сообщение об изменении маршрута, если в результате этой операции изменился лучший маршрут к целевой сети. Однако сообщение об изменении маршрута не отправляется клиенту, который выполняет этот вызов. Вместо этого соответствующая информация возвращается этой функцией непосредственно этому клиенту с помощью параметров Flags, CurBestRoute и PrevBestRoute .

Требования

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

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

Справочник по диспетчеру таблиц маршрутизации версии 1

Функции диспетчера таблиц маршрутизации версии 1

RtmDeleteRoute

RtmDequeueRouteChangeMessage