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


Функция GetIpInterfaceTable

Функция GetIpInterfaceTable извлекает записи ИНТЕРФЕЙСА IP на локальном компьютере.

Синтаксис

NETIOAPI_API GetIpInterfaceTable(
  _In_  ADDRESS_FAMILY         Family,
  _Out_ PMIB_IPINTERFACE_TABLE *Table
);

Параметры

  • Family [in]
    Семейство адресов IP-интерфейсов для извлечения.

    Возможные значения для семейства адресов перечислены в файле заголовка Winsock2.h. Обратите внимание, что значения для семейства адресов AF_ и констант семейства PF_ протоколов идентичны (например, AF_INET и PF_INET), поэтому можно использовать обе константы.

    В Windows Vista и более поздних версиях операционных систем Windows возможные значения параметра Family определяются в файле заголовка Ws2def.h. Обратите внимание, что файл заголовка Ws2def.h автоматически включается в Netioapi.h, и никогда не следует использовать Ws2def.h напрямую.

    В настоящее время для семейства адресов поддерживаются следующие значения:

    • AF_INET
      Семейство адресов IPv4.

    • AF_INET6
      Семейство адресов IPv6.

    • AF_UNSPEC
      Семейство адресов не указано. Если это значение указано, функция GetIpInterfaceTable возвращает таблицу интерфейсов IP, содержащую записи IPv4 и IPv6.

  • Таблица [out]
    Указатель на буфер, который получает таблицу записей ИНТЕРФЕЙСА IP в структуре MIB_IPINTERFACE_TABLE .

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

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

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

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

В функцию передан недопустимый параметр. Эта ошибка возвращается, если в параметре Table передается указатель NULL или параметр Family не указан как AF_INET, AF_INET6 или AF_UNSPEC.

STATUS_NOT_ENOUGH_MEMORY

Недостаточно ресурсов памяти для завершения операции.

STATUS_NOT_FOUND

Записи интерфейса IP, указанные в параметре Family , не найдены.

STATUS_NOT_SUPPORTED

Функция не поддерживается. Эта ошибка возвращается, если ip-транспорт, указанный в параметре Address , не настроен на локальном компьютере. Эта ошибка также возвращается в версиях Windows, в которых эта функция не поддерживается.

Другое

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

Комментарии

Функция GetIpInterfaceTable перечисляет IP-интерфейсы на локальном компьютере и возвращает эти сведения в MIB_IPINTERFACE_TABLE структуре.

GetIpInterfaceTable возвращает записи интерфейса IP в структуре MIB_IPINTERFACE_TABLE в буфере, на которую указывает параметр Table . Структура MIB_IPINTERFACE_TABLE содержит число записей интерфейса IP и массив MIB_IPINTERFACE_ROW структур для каждой записи интерфейса IP. Если эти возвращаемые структуры больше не требуются, драйвер должен освободить память, вызвав функцию FreeMibTable .

Драйвер должен инициализировать параметр Family для AF_INET или AF_INET6.

Обратите внимание, что возвращаемая MIB_IPINTERFACE_TABLE структура, на которую указывает параметр Table , может содержать заполнение для выравнивания между элементом NumEntries и первой записью массива MIB_IPINTERFACE_ROW в элементе Table структуры MIB_IPINTERFACE_TABLE. Между MIB_IPINTERFACE_ROW записями массива также может присутствовать заполнение для выравнивания. Любой доступ к записи массива MIB_IPINTERFACE_ROW должен предполагать наличие заполнения.

Требования

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

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

Версия

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

Заголовок

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

Библиотека

Netio.lib

IRQL

< DISPATCH_LEVEL

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

FreeMibTable

MIB_IPINTERFACE_ROW

MIB_IPINTERFACE_TABLE

MIB_IPNET_ROW2

MIB_IPNET_TABLE2