Функция GetIpInterfaceEntry (netioapi.h)
Функция GetIpInterfaceEntry извлекает сведения об IP-адресе для указанного интерфейса на локальном компьютере.
Синтаксис
IPHLPAPI_DLL_LINKAGE _NETIOAPI_SUCCESS_ NETIOAPI_API GetIpInterfaceEntry(
[in, out] PMIB_IPINTERFACE_ROW Row
);
Параметры
[in, out] Row
Указатель на структуру MIB_IPINTERFACE_ROW , которая при успешном возвращении получает сведения об интерфейсе на локальном компьютере. На входных данных для элемента InterfaceLuid или InterfaceIndexMIB_IPINTERFACE_ROW необходимо задать интерфейс, для которого требуется извлечь информацию.
Возвращаемое значение
Если функция выполняется успешно, возвращаемое значение будет NO_ERROR.
Если функция завершается сбоем, возвращаемое значение представляет собой один из следующих кодов ошибок.
Код возврата | Описание |
---|---|
|
Системе не удается найти указанный файл. Эта ошибка возвращается, если luID сетевого интерфейса или индекс интерфейса, заданный элементом InterfaceLuid или InterfaceIndexMIB_IPINTERFACE_ROW , на который указывает параметр Row , не был значением на локальном компьютере. |
|
В функцию передан недопустимый параметр. Эта ошибка возвращается, если указатель NULL передается в параметре Row , член СемействаMIB_IPINTERFACE_ROW , на который указывает параметр Row , не был указан как AF_INET или AF_INET6 либо оба элемента InterfaceLuid или InterfaceIndexMIB_IPINTERFACE_ROW , на которые указывает параметр Row , были не указаны. |
|
Элемент не найден. Эта ошибка возвращается, если сетевой интерфейс, заданный элементом InterfaceLuid или InterfaceIndexструктуры MIB_IPINTERFACE_ROW , на которую указывает параметр Row , не соответствует семейству IP-адресов, указанному в элементе Семейства в структуре MIB_IPINTERFACE_ROW . |
|
Используйте функцию FormatMessage , чтобы получить строку сообщения для возвращаемой ошибки. |
Комментарии
Функция GetIpInterfaceEntry определена в Windows Vista и более поздних версиях.
На входных данных элемент Family в структуре MIB_IPINTERFACE_ROW , на который указывает параметр Row , должен быть инициализирован AF_INET или AF_INET6. В дополнение к входным данным необходимо инициализировать по крайней мере один из следующих элементов в структуре MIB_IPINTERFACE_ROW , указываемой на параметр Row : InterfaceLuid или InterfaceIndex.
Поля используются в указанном выше порядке. Поэтому если указан InterfaceLuid , то этот член используется для определения интерфейса. Если для элемента InterfaceLuid не задано значение (значения этого элемента были равны нулю), то для определения интерфейса используется элемент InterfaceIndex .
В выходных данных элемент InterfaceLuidструктуры MIB_IPINTERFACE_ROW , на который указывает параметр Row , заполняется, если указан InterfaceIndex . Также заполняются другие элементы структуры MIB_IPINTERFACE_ROW , на которые указывает параметр Row .
Функция InitializeIpInterfaceEntry должна использоваться для инициализации полей записи структуры MIB_IPINTERFACE_ROW значениями по умолчанию. Затем приложение может изменить поля в записи MIB_IPINTERFACE_ROW , которую оно хочет изменить, а затем вызвать функцию SetIpInterfaceEntry .
Непривилегированные одновременный доступ к нескольким сетям с разными требованиями к безопасности создает дыру в безопасности и позволяет непривилегированного приложению случайно ретранслировать данные между двумя сетями. Типичный пример — одновременный доступ к виртуальной частной сети (VPN) и Интернету. В Windows Server 2003 и Windows XP используется ненадежная модель узла, где RAS предотвращает такой одновременный доступ за счет увеличения метрики маршрута всех маршрутов по умолчанию через другие интерфейсы. Таким образом, весь трафик направляется через интерфейс VPN, нарушая другие сетевые подключения.
В Windows Vista и более поздних версиях модель надежного узла используется по умолчанию. Если исходный IP-адрес указан в поиске маршрута с помощью GetBestRoute2 или GetBestRoute, поиск маршрута ограничивается интерфейсом исходного IP-адреса. Изменение метрики маршрута с помощью RAS не оказывает влияния, так как список потенциальных маршрутов даже не имеет маршрута для интерфейса VPN, что позволяет осуществлять трафик в Интернет. Элемент DisableDefaultRoutesMIB_IPINTERFACE_ROW можно использовать для отключения маршрута по умолчанию в интерфейсе. Этот член может использоваться VPN-клиентами в качестве меры безопасности, чтобы ограничить раздельное туннелирование, если vpn-клиент не требует раздельного туннелирования. VPN-клиент может вызвать функцию SetIpInterfaceEntry , чтобы при необходимости задать для элемента DisableDefaultRoutes значение TRUE . VPN-клиент может запросить текущее состояние элемента DisableDefaultRoutes , вызвав функцию GetIpInterfaceEntry .
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows Vista [только классические приложения] |
Минимальная версия сервера | Windows Server 2008 [только классические приложения] |
Целевая платформа | Windows |
Header | netioapi.h (включая Iphlpapi.h) |
Библиотека | Iphlpapi.lib |
DLL | Iphlpapi.dll |