Функция GetIpInterfaceEntry
Функция GetIpInterfaceEntry извлекает сведения об IP-адресе для указанного интерфейса на локальном компьютере.
Синтаксис
NETIOAPI_API GetIpInterfaceEntry(
_Inout_ PMIB_IPINTERFACE_ROW Row
);
Параметры
- Строка [вход, выход]
Указатель на структуру MIB_IPINTERFACE_ROW , которая при успешном возвращении получает сведения об интерфейсе на локальном компьютере. При входе драйвер должен задать элемент InterfaceLuid или Элемент InterfaceIndex MIB_IPINTERFACE_ROW интерфейсу, для которого требуется получить сведения.
Возвращаемое значение
GetIpInterfaceEntry возвращает STATUS_SUCCESS, если функция выполнена успешно.
В случае сбоя функции GetIpInterfaceEntry возвращает один из следующих кодов ошибок:
Код возврата | Описание |
---|---|
STATUS_INVALID_PARAMETER | В функцию передан недопустимый параметр. Эта ошибка возвращается, если в параметре Row передается указатель 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 , на которую указывает параметр Row .
Семейство
Задайте значение AF_INET или AF_INET6.InterfaceLuid или InterfaceIndex
Эти элементы используются в порядке, указанном ранее. Таким образом, если указан 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 (включая Netioapi.h) |
Библиотека |
Netio.lib |
IRQL |
< DISPATCH_LEVEL |