Функция 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.
Если функция завершается сбоем, возвращаемое значение представляет собой один из следующих кодов ошибок.
Код возврата | Описание |
---|---|
|
В функцию передан недопустимый параметр. Эта ошибка возвращается, если указатель NULL передается в параметре DestinationAddress, BestSourceAddress или BestRoute . Эта ошибка также возвращается, если параметр DestinationAddress не указывает IPv4- или IPv6-адрес и семейство. |
|
Не удалось найти указанный интерфейс. Эта ошибка возвращается, если не удалось найти сетевой интерфейс, заданный параметром InterfaceLuid или InterfaceIndex . |
|
Запрос не поддерживается. Эта ошибка возвращается, если на локальном компьютере отсутствует стек 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 |