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


Функция ResolveIpNetEntry2

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

Синтаксис

NETIOAPI_API ResolveIpNetEntry2(
  _Inout_        PMIB_IPNET_ROW2 Row,
  _In_opt_ const SOCKADDR_INET   *SourceAddress
);

Параметры

  • Строка [вход, выход]
    Указатель на запись структуры MIB_IPNET_ROW2 для записи соседнего IP-адреса. При успешном возвращении эта структура обновляется свойствами для соседнего IP-адреса.

  • SourceAddress [in, необязательно]
    Указатель на необязательный исходный IP-адрес, используемый для выбора интерфейса для отправки запросов для записи соседнего IP-адреса.

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

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

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

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

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

STATUS_INVALID_PARAMETER

В функцию передан недопустимый параметр. Эта ошибка возвращается, если в параметре Row передается указатель NULL, члену addressMIB_IPNET_ROW2 структуры, на которую указывает параметр Row, не задан допустимый IPv4-адрес или IPv6-адрес или не указаны оба элемента InterfaceLuid и InterfaceIndex структуры MIB_IPNET_ROW2. Эта ошибка также возвращается, если в элементе Address был передан адрес замыкания на себя.

STATUS_NOT_FOUND

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

STATUS_NOT_SUPPORTED

Запрос не поддерживается. Эта ошибка возвращается, если на локальном компьютере не расположен стек IPv4 и адрес IPv4 был указан в элементе Address структуры MIB_IPNET_ROW2, на которую указывает параметр Row , или если на локальном компьютере не расположен стек IPv6, а адрес IPv6 был указан в элементе Address .

Другое

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

Комментарии

Функция ResolveIpNetEntry2 используется для разрешения физического адреса для записи соседнего IP-адреса на локальном компьютере. Эта функция очищает все существующие соседние записи, которые соответствуют IP-адресу в интерфейсе, а затем разрешает адрес физического адреса (MAC), отправляя запросы ARP на IPv4-адрес или запросы соседей (NS) на IPv6-адрес. Если указан параметр SourceAddress , ResolveIpNetEntry2 выбирает интерфейс с этим исходным IP-адресом для отправки запросов. Если параметр SourceAddress не указан (в этом параметре передано значение NULL ), ResolveIpNetEntry2 автоматически выбирает лучший интерфейс для отправки запросов.

Драйвер должен инициализировать следующие элементы структуры MIB_IPNET_ROW2 , на которую указывает параметр Row .

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

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

Если IP-адрес, передаваемый в элементе Address MIB_IPNET_ROW2 структуры, на которую указывает параметр Row , является дубликатом существующего IP-адреса в интерфейсе, функция ResolveIpNetEntry2 очищает существующую запись перед разрешением IP-адреса.

После успешного вызова ResolveIpNetEntry2 извлекает другие свойства для соседнего IP-адреса и заполняет структуру MIB_IPNET_ROW2, на которую указывает параметр Row . Элементы PhysicalAddress и PhysicalAddressLength в структуре MIB_IPNET_ROW2 инициализируются допустимым физическим адресом.

Требования

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

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

Версия

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

Заголовок

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

Библиотека

Netio.lib

IRQL

< DISPATCH_LEVEL

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

CreateIpNetEntry2

DeleteIpNetEntry2

FlushIpNetTable2

GetIpNetEntry2

GetIpNetTable2

MIB_IPNET_ROW2

MIB_IPNET_TABLE2

SetIpNetEntry2