Функция 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 для этого параметра, то предыдущие сведения о наилучшем маршруте не возвращаются.
Возвращаемое значение является одним из следующих кодов.
Значение | Описание |
---|---|
|
Маршрут был успешно добавлен или обновлен. |
|
Параметр дескриптора клиента не является допустимым дескриптором. |
|
Структура маршрута содержит недопустимый параметр. |
|
Недостаточно ресурсов для выполнения операции. |
|
Недостаточно памяти для выделения записи маршрута. |
Функция создает сообщение об изменении маршрута, если в результате этой операции изменился лучший маршрут к целевой сети. Однако сообщение об изменении маршрута не отправляется клиенту, который выполняет этот вызов. Вместо этого соответствующая информация возвращается этой функцией непосредственно этому клиенту с помощью параметров Flags, CurBestRoute и PrevBestRoute .
Требование | Значение |
---|---|
Минимальная версия клиента |
Ни одна версия не поддерживается |
Минимальная версия сервера |
Windows 2000 Server [только классические приложения] |
Окончание поддержки сервера |
Windows Server 2003 |
Заголовок |
|
Библиотека |
|
DLL |
|