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


Функция GetUnicastIpAddressTable

Функция GetUnicastIpAddressTable извлекает таблицу одноадресных IP-адресов на локальном компьютере.

Синтаксис

NETIOAPI_API GetUnicastIpAddressTable(
  _In_  ADDRESS_FAMILY              Family,
  _Out_ PMIB_UNICASTIPADDRESS_TABLE *Table
);

Параметры

  • Семья [в]
    Извлекаемая семья адресов.

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

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

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

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

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

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

  • Таблица [out]
    Указатель на структуру MIB_UNICASTIPADDRESS_TABLE , содержащую таблицу одноадресных записей IP-адресов на локальном компьютере.

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

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

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

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

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

STATUS_NOT_ENOUGH_MEMORY

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

STATUS_NOT_FOUND

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

STATUS_NOT_SUPPORTED

Запрос не поддерживается. Эта ошибка возвращается, если на локальном компьютере нет стека IPv4 и AF_INET был указан в параметре Family , или если на локальном компьютере нет стека IPv6 и AF_INET6 был указан в параметре Family . Эта ошибка также возвращается в версиях Windows, где эта функция не поддерживается.

Другое

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

Комментарии

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

GetUnicastIpAddressTable возвращает записи одноадресных IP-адресов в структуре MIB_UNICASTIPADDRESS_TABLE в буфере, на который указывает параметр Table . Структура MIB_UNICASTIPADDRESS_TABLE содержит число записей одноадресных IP-адресов и массив структур MIB_UNICASTIPADDRESS_ROW для каждой записи одноадресного IP-адреса. Если эти возвращаемые структуры больше не требуются, драйвер должен освободить память, вызвав FreeMibTable.

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

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

Требования

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

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

Версия

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

Заголовок

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

Библиотека

Netio.lib

IRQL

< DISPATCH_LEVEL

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

CreateUnicastIpAddressEntry

DeleteUnicastIpAddressEntry

FreeMibTable

GetUnicastIpAddressEntry

InitializeUnicastIpAddressEntry

MIB_UNICASTIPADDRESS_ROW

MIB_UNICASTIPADDRESS_TABLE

NotifyStableUnicastIpAddressTable

NotifyUnicastIpAddressChange

SetUnicastIpAddressEntry