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


Функция GetBestRoute2

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

Синтаксис

NETIOAPI_API GetBestRoute2(
  _In_opt_       NET_LUID            *InterfaceLuid,
  _In_           NET_IFINDEX         InterfaceIndex,
  _In_opt_ const SOCKADDR_INET       *SourceAddress,
  _In_     const SOCKADDR_INET       *DestinationAddress,
  _In_           ULONG               AddressSortOptions,
  _Out_          PMIB_IPFORWARD_ROW2 BestRoute,
  _Out_          SOCKADDR_INET       *BestSourceAddress
);

Параметры

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

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

  • SourceAddress [in, необязательно]
    IP-адрес источника. Драйвер может опустить этот параметр и передать указатель NULL .

  • DestinationAddress [in]
    IP-адрес конечного устройства.

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

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

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

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

GetBestRoute2 возвращает STATUS_SUCCESS, если функция выполнена успешно.

В случае сбоя функции GetBestRoute2 возвращает один из следующих кодов ошибок:

Код возврата Описание
STATUS_INVALID_PARAMETER

В функцию передан недопустимый параметр. Эта ошибка возвращается при передаче указателя NULL в параметрах DestinationAddress, BestSourceAddress или BestRoute . Эта ошибка также возвращается, если параметры InterfaceLuid и InterfaceIndex не указаны. Эта ошибка также возвращается, если параметр DestinationAddress не указывает IPv4- или IPv6-адрес и семейство.

STATUS_NOT_FOUND

Не удалось найти указанный интерфейс. Эта ошибка возвращается, если не удалось найти сетевой интерфейс, указанный параметром InterfaceLuid или InterfaceIndex .

STATUS_NOT_SUPPORTED

Запрос не поддерживается. Эта ошибка возвращается, если на локальном компьютере не расположен стек IPv4, а в параметре DestinationAddress указаны IPv4-адрес и семейство IPv4-адресов или если на локальном компьютере нет стека IPv6, а адрес И семейство IPv4 были указаны в параметре DestinationAddress .

Другое

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

Комментарии

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

При входе драйвер должен инициализировать следующие параметры.

  • DestinationAddress
    Задайте допустимый IPv4- или IPv6-адрес и семейство.

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

Кроме того, при входе драйвер может инициализировать параметр SourceAddress для предпочитаемого IPv4 или IPv6-адреса и семейства.

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

Требования

Целевая платформа

Универсальное

Версия

Доступно в Windows Vista и более поздних версиях операционных систем Windows.

Заголовок

Netioapi.h (включая Netioapi.h)

Библиотека

Netio.lib

IRQL

< DISPATCH_LEVEL

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

CreateIpForwardEntry2

DeleteIpForwardEntry2

GetIpForwardEntry2

GetIpForwardTable2

InitializeIpForwardEntry

MIB_IPFORWARD_ROW2

MIB_IPFORWARD_TABLE2

NotifyRouteChange2

SetIpForwardEntry2