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


Функция GetIfTable2Ex (netioapi.h)

Функция GetIfTable2Ex извлекает таблицу интерфейса MIB-II.

Синтаксис

IPHLPAPI_DLL_LINKAGE _NETIOAPI_SUCCESS_ NETIOAPI_API GetIfTable2Ex(
  [in]  MIB_IF_TABLE_LEVEL Level,
  [out] PMIB_IF_TABLE2     *Table
);

Параметры

[in] Level

Уровень извлекаемых сведений об интерфейсе. Этот параметр может быть одним из значений из типа перечисления MIB_IF_TABLE_LEVEL , определенного в файле заголовка Netioapi.h .

Значение Значение
MibIfTableNormal
Значения статистики и состояния, возвращаемые в элементах структуры MIB_IF_ROW2 в структуре MIB_IF_TABLE2 , на которую указывает параметр Table , возвращаются из верхней части стека фильтров при указании этого параметра.
MibIfTableRaw
Значения статистики и состояния, возвращаемые в элементах структуры MIB_IF_ROW2 в структуре MIB_IF_TABLE2 , на которую указывает параметр Table , возвращаются непосредственно для запрашиваемого интерфейса.

[out] Table

Указатель на буфер, который получает таблицу интерфейсов в структуре MIB_IF_TABLE2 .

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

Если функция выполняется успешно, возвращаемое значение будет NO_ERROR.

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

Код возврата Описание
ERROR_INVALID_PARAMETER
В функцию передан недопустимый параметр. Эта ошибка возвращается, если в параметре Level было передано недопустимое значение.
ERROR_NOT_ENOUGH_MEMORY
Недостаточно ресурсов памяти для завершения операции.
Другое
Используйте FormatMessage , чтобы получить строку сообщения для возвращенной ошибки.

Комментарии

The
Функция GetIfTable2Ex перечисляет логические и физические интерфейсы в локальной системе и возвращает эти сведения в MIB_IF_TABLE2 структуре. GetIfTable2Ex — это расширенная версия функции GetIfTable , которая позволяет выбирать уровень извлекаемых сведений об интерфейсе.

Аналогичную функцию GetIfTable2 также можно использовать для извлечения интерфейсов. но не позволяет указать уровень возвращаемых интерфейсов. Вызов функции GetIfTable2Ex с параметром Level , равным MibIfTableNormal , получает те же результаты, что и вызов функции GetIfTable2 .

Интерфейсы возвращаются в MIB_IF_TABLE2 структуре в буфере, на который указывает параметр Table . Структура MIB_IF_TABLE2 содержит число интерфейсов и массив MIB_IF_ROW2 структур для каждого интерфейса. Память выделяется функцией GetIfTable2 для структуры MIB_IF_TABLE2 и MIB_IF_ROW2 записей в этой структуре. Если возвращаемые структуры больше не требуются, освободите память, вызвав FreeMibTable.

Все интерфейсы, включая интерфейсы промежуточного драйвера NDIS и интерфейсы драйвера фильтра NDIS, возвращаются для любого из возможных значений параметра Level . Параметр параметра Level влияет на то, как возвращаются статистические данные и элементы состояния MIB_IF_ROW2 структуры в структуре MIB_IF_TABLE2 , на которую указывает параметр Table для интерфейса. Например, сетевой интерфейс карта (NIC) будет иметь драйвер мини-порта NDIS. Для взаимодействия между драйверами протокола верхнего уровня и драйверами минипорта NDIS можно установить промежуточный драйвер NDIS. Драйвер фильтра NDIS (LWF) можно подключить поверх промежуточного драйвера NDIS. Предположим, что сетевой адаптер сообщает элемент MediaConnectState структуры MIB_IF_ROW2 как MediaConnectStateConnectConnected , но драйвер фильтра NDIS изменяет состояние и сообщает о состоянии как MediaConnectStateDisconnected. При запросе сведений об интерфейсе с параметром Level , имеющим значение MibIfTableNormal, отображается состояние в верхней части стека фильтров, то есть MediaConnectStateDisconnected . При запросе интерфейса с параметром Level , равным MibIfTableRaw, возвращается состояние непосредственно на уровне интерфейса, то есть MediaConnectStateConnectEd .

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

Требования

Требование Значение
Минимальная версия клиента Windows Vista [только классические приложения]
Минимальная версия сервера Windows Server 2008 [только классические приложения]
Целевая платформа Windows
Header netioapi.h (включая Iphlpapi.h)
Библиотека Iphlpapi.lib
DLL Iphlpapi.dll

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

FreeMibTable

GetIfTable

GetIfTable2

Справочник по вспомогательным функциям IP

MIB_IF_ROW2

MIB_IF_TABLE2