GetIfTable2Ex 函数

GetIfTable2Ex 函数在给定要检索的接口信息级别的情况下检索 MIB-II 接口表。

语法

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

参数

  • 级别 [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 不允许驱动程序指定要返回的接口级别。 调用将 Level 参数设置为 MibIfTableNormalGetIfTable2Ex 函数将检索与调用 GetIfTable2 函数相同的结果。

GetIfTable2Ex 返回 Table 参数指向的缓冲区中MIB_IF_TABLE2结构中的接口。 MIB_IF_TABLE2 结构包含接口计数和每个接口 的MIB_IF_ROW2 结构数组。 GetIfTable2 为此结构中的MIB_IF_TABLE2结构和MIB_IF_ROW2项分配 mmory。 当不再需要这些返回的结构时,驱动程序应通过调用 FreeMibTable 释放内存。

对于 Level 参数的任一可能值,返回所有接口(包括 NDIS 中间驱动程序接口和 NDIS 筛选器驱动程序接口)。 Level 参数的设置会影响接口的 Table 参数指向的MIB_IF_TABLE2结构中MIB_IF_ROW2结构的统计信息和状态成员的返回方式。 例如,卡 (NIC) 网络接口具有 NDIS 微型端口驱动程序。 可以安装 NDIS 中间驱动程序,以在上层协议驱动程序和 NDIS 微型端口驱动程序之间进行接口。 可以在 NDIS 中间驱动程序的顶部附加 NDIS 筛选器驱动程序。 假设 NIC 将 MIB_IF_ROW2 结构的 MediaConnectState 成员报告为 MediaConnectStateConnected,但 NDIS 筛选器驱动程序会修改状态并将状态报告为 MediaConnectStateDisconnected。 在将 Level 参数设置为 MibIfTableNormal 的情况下查询接口信息时,将报告筛选器堆栈顶部的状态 (MediaConnectStateDisconnected) 。 查询接口时, 将 Level 参数设置为 MibIfTableRaw 时,将返回接口级别的状态直接 (MediaConnectStateConnected) 。

请注意, Table 参数指向的返回MIB_IF_TABLE2结构可能包含 NumEntries 成员与 MIB_IF_TABLE2 结构的 Table 成员中第一个MIB_IF_ROW2数组条目之间的对齐填充。 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