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


Функция GetIfTable2Ex

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

Синтаксис

NETIOAPI_API GetIfTable2Ex(
  _In_  MIB_IF_TABLE_LEVEL Level,
  _Out_ PMIB_IF_TABLE2     *Table
);

Параметры

  • Level [in]
    Уровень извлекаемых сведений об интерфейсе. Этот параметр может быть одним из значений перечисления MIB_IF_TABLE_LEVEL .

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

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

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

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

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

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

STATUS_NOT_ENOUGH_MEMORY

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

Другое

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

Комментарии

Функция GetIfTable2Ex перечисляет логические и физические интерфейсы на локальном компьютере и возвращает эти сведения в MIB_IF_TABLE2 структуре.

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

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

Все интерфейсы, включая промежуточные интерфейсы драйвера NDIS и интерфейсы драйвера фильтра NDIS, возвращаются для любого из возможных значений параметра Level . Параметр параметра Level влияет на то, как возвращаются статистические данные и элементы состояния структуры MIB_IF_ROW2 в структуре MIB_IF_TABLE2, на которую указывает параметр Table для интерфейса. Например, сетевой интерфейс карта (NIC) имеет драйвер мини-порта NDIS. Для взаимодействия между драйверами протокола верхнего уровня и драйверами минипорта NDIS можно установить промежуточный драйвер NDIS. Драйвер фильтра NDIS можно подключить поверх промежуточного драйвера 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.

Заголовок

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

Библиотека

Netio.lib

IRQL

< DISPATCH_LEVEL

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

FreeMibTable

GetIfTable2

MIB_IF_TABLE_LEVEL

MIB_IF_TABLE2

MIB_IF_ROW2