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


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

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

Синтаксис

IPHLPAPI_DLL_LINKAGE _NETIOAPI_SUCCESS_ NETIOAPI_API ResolveIpNetEntry2(
  [in, out]      PMIB_IPNET_ROW2     Row,
  [in, optional] const SOCKADDR_INET *SourceAddress
);

Параметры

[in, out] Row

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

[in, optional] SourceAddress

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

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

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

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

Код возврата Описание
ERROR_BAD_NET_NAME
Не найдено сетевое имя". Эта ошибка возвращается, если сеть с соседним IP-адресом недоступна.
ERROR_INVALID_PARAMETER
В функцию передан недопустимый параметр. Эта ошибка возвращается, если в параметре Row передан указатель NULL, члену AddressMIB_IPNET_ROW2, на который указывает параметр Row, не задан допустимый адрес IPv4 или IPv6, либо оба элемента InterfaceLuid или InterfaceIndexMIB_IPNET_ROW2, на которые указывает параметр Row, не были указаны. Эта ошибка также возвращается, если в элементе Address был передан адрес замыкания на себя.
ERROR_NOT_FOUND
Не удалось найти указанный интерфейс. Эта ошибка возвращается, если не удалось найти сетевой интерфейс, заданный элементом InterfaceLuid или InterfaceIndexMIB_IPNET_ROW2 , на который указывает параметр Row .
ERROR_NOT_SUPPORTED
Запрос не поддерживается. Эта ошибка возвращается, если на локальном компьютере нет стека IPv4 и адрес IPv4 был указан в элементе AddressMIB_IPNET_ROW2 , на который указывает параметр Row , или на локальный компьютер не находится стек IPv6, а адрес IPv6 был указан в элементе Address .
Другое
Используйте FormatMessage , чтобы получить строку сообщения для возвращенной ошибки.

Комментарии

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

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

Элемент Address в структуре MIB_IPNET_ROW2 , на который указывает параметр Row , должен быть инициализирован допустимым IPv4- или IPv6-адресом и семейством. Кроме того, по крайней мере один из следующих элементов в структуре MIB_IPNET_ROW2 , указываемой на параметр Row , должен быть инициализирован в интерфейсе: InterfaceLuid или InterfaceIndex.

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

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

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

Требования

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

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

CreateIpNetEntry2

DeleteIpNetEntry2

FlushIpNetTable2

GetIpNetEntry2

GetIpNetTable2

MIB_IPNET_ROW2

MIB_IPNET_TABLE2

SOCKADDR_INET

SetIpNetEntry2