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


Функция GetBestRoute2 (netioapi.h)

Функция GetBestRoute2 извлекает запись IP-маршрута на локальном компьютере для оптимального маршрута к указанному IP-адресу назначения.

Синтаксис

IPHLPAPI_DLL_LINKAGE _NETIOAPI_SUCCESS_ NETIOAPI_API GetBestRoute2(
  [in, optional] NET_LUID            *InterfaceLuid,
  [in]           NET_IFINDEX         InterfaceIndex,
  [in]           const SOCKADDR_INET *SourceAddress,
  [in]           const SOCKADDR_INET *DestinationAddress,
  [in]           ULONG               AddressSortOptions,
  [out]          PMIB_IPFORWARD_ROW2 BestRoute,
  [out]          SOCKADDR_INET       *BestSourceAddress
);

Параметры

[in, optional] InterfaceLuid

Локальный уникальный идентификатор (LUID) для указания сетевого интерфейса, связанного с записью IP-маршрута.

[in] InterfaceIndex

Значение локального индекса для указания сетевого интерфейса, связанного с записью IP-маршрута. Это значение индекса может изменяться при отключении и включении сетевого адаптера или при других обстоятельствах и не должно считаться постоянным.

[in] SourceAddress

IP-адрес источника. Этот параметр можно опустить и передать в виде указателя NULL .

[in] DestinationAddress

IP-адрес конечного устройства.

[in] AddressSortOptions

Набор параметров, влияющих на сортировку IP-адресов. Этот параметр в настоящее время не используется.

[out] BestRoute

Указатель на MIB_IPFORWARD_ROW2 для оптимального маршрута от исходного IP-адреса к IP-адресу назначения.

[out] BestSourceAddress

Указатель на лучший исходный IP-адрес.

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

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

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

Код возврата Описание
ERROR_INVALID_PARAMETER
В функцию передан недопустимый параметр. Эта ошибка возвращается, если указатель NULL передается в параметре DestinationAddress, BestSourceAddress или BestRoute . Эта ошибка также возвращается, если параметр DestinationAddress не указывает IPv4- или IPv6-адрес и семейство.
ERROR_FILE_NOT_FOUND
Не удалось найти указанный интерфейс. Эта ошибка возвращается, если не удалось найти сетевой интерфейс, заданный параметром InterfaceLuid или InterfaceIndex .
ERROR_NOT_SUPPORTED
Запрос не поддерживается. Эта ошибка возвращается, если на локальном компьютере отсутствует стек IPv4 и в параметре DestinationAddress указаны IPv4-адрес и семейство. Эта ошибка также возвращается, если на локальном компьютере нет стека IPv6, а адрес IPv6 и семейство были указаны в параметре DestinationAddress .
Другое
Используйте FormatMessage , чтобы получить строку сообщения для возвращенной ошибки.

Комментарии

Функция GetBestRoute2 определена в Windows Vista и более поздних версиях.

Функция GetBestRoute2 используется для получения MIB_IPFORWARD_ROW2 записи структуры для оптимального маршрута от исходного IP-адреса к IP-адресу назначения.

При входных данных параметр DestinationAddress должен быть инициализирован допустимым IPv4- или IPv6-адресом и семейством. При входных данных параметр SourceAddress может быть инициализирован для предпочтительного IPv4- или IPv6-адреса и семейства. Кроме того, необходимо инициализировать хотя бы один из следующих параметров: InterfaceLuid или InterfaceIndex.

Параметры используются в порядке, указанном выше. Поэтому если указан InterfaceLuid , то этот член используется для определения интерфейса. Если для элемента InterfaceLuid не задано значение (значения этого элемента были равны нулю), то для определения интерфейса используется элемент InterfaceIndex .

При успешном вызове GetBestRoute2 извлекает и MIB_IPFORWARD_ROW2 структуру для наилучшего маршрута с исходного IP-адреса и целевого IP-адреса.

Требования

Требование Значение
Минимальная версия клиента Windows Vista [классические приложения | Приложения UWP]
Минимальная версия сервера Windows Server 2008 [классические приложения | Приложения UWP]
Целевая платформа Windows
Header netioapi.h (включая Iphlpapi.h)
Библиотека Iphlpapi.lib
DLL Iphlpapi.dll

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

CreateIpForwardEntry2

DeleteIpForwardEntry2

GetIpForwardEntry2

GetIpForwardTable2

InitializeIpForwardEntry

MIB_IPFORWARD_ROW2

MIB_IPFORWARD_TABLE2

NotifyRouteChange2

SetIpForwardEntry2