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


Функция GetIpInterfaceEntry

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

Синтаксис

NETIOAPI_API GetIpInterfaceEntry(
  _Inout_ PMIB_IPINTERFACE_ROW Row
);

Параметры

  • строк [in, out]
    Указатель на структуру MIB_IPINTERFACE_ROW, которая при успешном возвращении получает сведения для интерфейса на локальном компьютере. При входе драйвер должен задать элемент InterfaceLuid или элемент InterfaceIndex элемента MIB_IPINTERFACE_ROW для получения сведений.

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

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

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

Возвращаемый код Описание
STATUS_INVALID_PARAMETER

Недопустимый параметр был передан функции. Эта ошибка возвращается, если указатель NULL передается в параметре строки. Член семейства структуры MIB_IPINTERFACE_ROW, к которому указывает параметр row, не указан как AF_INET или AF_INET6, или InterfaceLuid и InterfaceIndex члены структуры MIB_IPINTERFACE_ROW были не указаны.

STATUS_NOT_FOUND

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

Другие

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

Замечания

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

  • семьи
    Установите значение AF_INET или AF_INET6.

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

В выходных данных GetIpInterfaceEntry заполняет остальные элементы структуры MIB_IPINTERFACE_ROW, на которые указывает параметр row.

Драйвер должен использовать функцию InitializeIpInterfaceEntry для инициализации полей записи структуры MIB_IPINTERFACE_ROW со значениями по умолчанию. Затем драйвер может изменить поля в записи MIB_IPINTERFACE_ROW, которую он хочет изменить, а затем вызвать функцию SetIpInterfaceEntry.

Непривилизованный одновременный доступ к нескольким сетям различных требований безопасности создает отверстие безопасности и позволяет непреднамеренно передавать данные между двумя сетями. Типичным примером является одновременный доступ к виртуальной частной сети (VPN) и Интернету. Операционные системы Windows Server 2003 и Windows XP используют слабую модель узла, где служба удаленного доступа (RAS) предотвращает такой одновременный доступ, увеличив метрики маршрутов всех маршрутов по умолчанию через другие интерфейсы. Таким образом, весь трафик направляется через VPN-интерфейс, нарушая другие сетевые подключения.

В Windows Vista и более поздних версиях операционных систем Windows по умолчанию используется надежная модель узла. Если исходный IP-адрес указан в подстановке маршрута с помощью функции GetBestRoute2, поиск маршрута ограничен интерфейсом исходного IP-адреса. Изменение метрик маршрута с помощью RAS не влияет, так как список потенциальных маршрутов даже не имеет маршрута для VPN-интерфейса, который обеспечивает трафик в Интернет. Драйвер может использовать DisableDefaultRoutes члена MIB_IPINTERFACE_ROW, чтобы отключить использование маршрута по умолчанию в интерфейсе. VPN-клиенты могут использовать этот элемент в качестве меры безопасности, чтобы ограничить разделение туннелирования, если разделение туннелирования не требуется VPN-клиенту. VPN-клиент может вызвать функцию SetIpInterfaceEntry, чтобы задать элемент DisableDefaultRoutes значение TRUE при необходимости. VPN-клиент может запрашивать текущее состояние элемента DisableDefaultRoutes, вызвав функцию GetIpInterfaceEntry.

Требования

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

универсальные

Версия

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

Заголовок

Netioapi.h (include Netioapi.h)

Библиотека

Netio.lib

IRQL

< DISPATCH_LEVEL

См. также

GetBestRoute2

GetIfEntry2

GetIfTable2

GetIfTable2Ex

GetIpInterfaceTable

MIB_IF_ROW2

MIB_IF_TABLE2

MIB_IPINTERFACE_ROW

MIB_IPINTERFACE_TABLE

SetIpInterfaceEntry