ifEntry 结构 (tcpioctl.h)

[此结构在 Windows 的未来版本中可能已更改或不可用。]

按照第 16 页到第 23 页的 Internet 工程任务组 (IETF) ) ( 注释请求 (MIB-II) ,描述符合简单网络管理协议版本 2 (SNMPv2) 管理信息库的 TCP/IP 接口。

语法

typedef struct IFEntry {
  ulong if_index;
  ulong if_type;
  ulong if_mtu;
  ulong if_speed;
  ulong if_physaddrlen;
  uchar if_physaddr[MAX_PHYSADDR_SIZE];
  ulong if_adminstatus;
  ulong if_operstatus;
  ulong if_lastchange;
  ulong if_inoctets;
  ulong if_inucastpkts;
  ulong if_innucastpkts;
  ulong if_indiscards;
  ulong if_inerrors;
  ulong if_inunknownprotos;
  ulong if_outoctets;
  ulong if_outucastpkts;
  ulong if_outnucastpkts;
  ulong if_outdiscards;
  ulong if_outerrors;
  ulong if_outqlen;
  ulong if_descrlen;
  uchar if_descr[1];
} IFEntry;

成员

if_index

一个介于 1 和此系统上存在的网络接口数之间的值,无论其当前状态如何,它唯一标识此接口,并在网络管理系统的重新初始化后保持。

if_type

根据物理或链接协议 (接口类型,) 紧邻协议堆栈中的网络层。 下表列出了 RFC 1213 第 18 页和第 19 页枚举的此if_type成员的可能值。

含义
1
其他 (,即以下任何)
2
regular1822
3
hdh1822
4
ddn-x25
5
rfc877-x25
6
Ethernet-csmacd
7
iso88023-csmacd
8
iso88024-tokenBus
9
iso88025-tokenRing
10
iso88026-man
11
starLan
12
proteon-10Mbit
13
proteon-80Mbit
14
hyperchannel
15
Fddi
16
lapb
17
Sdlc
18
ds1 (T-1)
19
e1 (T-1) 的欧洲等价
20
basicISDN
21
primaryISDN (专有串行)
22
propPointToPointSerial
23
Ppp
24
softwareLoopback
25
eon (CLNP over IP [11])
26
Ethernet-3Mbit
27
nsip (XNS over IP)
28
slip (泛型 SLIP)
29
ultra (ULTRA 技术)
30
ds3 (T-3)
31
sip (SMDS)
32
帧中继 (32)
 

包括 Microsoft SDK 中的 Ipifcons.h 头文件,以获取支持这些和其他 IP 接口类型的标志常量。

检查 if_type 成员的值时,可能还需要定义并测试标识“环回”接口的其他常量: #define IF_TYPE_LOOPBACK 0

if_mtu

可在接口上发送或接收的最大数据报的大小(以字节为单位)。 对于用于传输网络数据报的接口,这是可在接口上发送的最大网络数据报的大小。

if_speed

接口当前带宽的估计值(以位/秒为单位)。 对于带宽没有变化或无法进行准确估计的接口,此成员包含名义带宽。

if_physaddrlen

if_physaddr 成员中包含的地址的长度(以字节为单位)。 对于没有此类地址的接口(例如串行端口), if_physaddrlen 成员为零。

if_physaddr[MAX_PHYSADDR_SIZE]

协议层紧邻协议堆栈中网络层下方的接口地址。 对于没有此类地址的接口(例如串行端口), if_physaddr 成员包含一个空字符串。

if_adminstatus

接口的所需状态; RFC 1213 第 20 页中指定的以下值之一。

含义
1
向上;准备传递数据包。
2
关闭。
3
在测试状态下,无法传递任何操作数据包。

if_operstatus

接口的实际当前操作状态; RFC 1213 第 20 页中指定的以下值之一。

含义
1
向上;准备传递数据包。
2
关闭。
3
在测试状态下,无法传递任何操作数据包。

if_lastchange

自上次重新初始化系统的网络管理部分以来,此接口进入其实际当前操作状态的时间(以百分之几秒为单位)。 如果当前状态是在上次重新初始化本地网络管理子系统之前输入的,则此成员设置为零。

if_inoctets

在此接口上接收的总字节数,包括帧字符。

if_inucastpkts

传递到较高层协议的子网单播数据包数。

if_innucastpkts

传递到较高层协议的非单播 (子网广播或子网多播) 数据包的数目。

if_indiscards

为了释放内存资源而丢弃的入站数据包数,或出于与任何错误无关的类似原因而无法将其交付到更高层协议。

if_inerrors

包含错误的入站数据包数,这些错误会阻止这些错误传递到较高层协议。

if_inunknownprotos

由于未知或不受支持的协议而丢弃的入站数据包数。

if_outoctets

从接口传出的总字节数,包括帧字符。

if_outucastpkts

更高级别的协议请求传输到子网单播地址的数据包总数,包括已丢弃或未发送的数据包总数。

if_outnucastpkts

更高级别协议请求传输到非单播 (子网广播或子网多播) 地址的数据包总数,包括丢弃或未发送的数据包。

if_outdiscards

为了释放内存资源而丢弃的出站数据包数,或者出于与阻止传输内存资源的任何错误无关的其他类似原因。

if_outerrors

由于错误而无法传输的出站数据包数。

if_outqlen

输出数据包队列中的当前数据包数。

if_descrlen

if_descr 成员中包含的接口说明文本的大小(以字节为单位),不计算任何终止 null 字符。

if_descr[1]

一个文本字符串,其中包含有关此接口的信息,包括制造商名称、产品名称和硬件版本。 如果未包含字符串,则缓冲区的大小为 1 字节。

注解

由于其 长度可变if_descr 成员, IFEntry 结构没有固定大小。 为了分配内存以包含结构的实际实例,可以按如下所示计算合理的安全缓冲区大小:

maxIFEntryLen = sizeof(IFEntry) + MAX_ADAPTER_DESCRIPTION_LENGTH + 1;

要求

要求
Header tcpioctl.h

另请参阅

IOCTL_TCP_QUERY_INFORMATION_EX

管理信息库参考