Функция 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 |