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成员的可能值。
值 | 含义 |
---|---|
|
其他 (,即以下任何) |
|
regular1822 |
|
hdh1822 |
|
ddn-x25 |
|
rfc877-x25 |
|
Ethernet-csmacd |
|
iso88023-csmacd |
|
iso88024-tokenBus |
|
iso88025-tokenRing |
|
iso88026-man |
|
starLan |
|
proteon-10Mbit |
|
proteon-80Mbit |
|
hyperchannel |
|
Fddi |
|
lapb |
|
Sdlc |
|
ds1 (T-1) |
|
e1 (T-1) 的欧洲等价 |
|
basicISDN |
|
primaryISDN (专有串行) |
|
propPointToPointSerial |
|
Ppp |
|
softwareLoopback |
|
eon (CLNP over IP [11]) |
|
Ethernet-3Mbit |
|
nsip (XNS over IP) |
|
slip (泛型 SLIP) |
|
ultra (ULTRA 技术) |
|
ds3 (T-3) |
|
sip (SMDS) |
|
帧中继 (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 页中指定的以下值之一。
值 | 含义 |
---|---|
|
向上;准备传递数据包。 |
|
关闭。 |
|
在测试状态下,无法传递任何操作数据包。 |
if_operstatus
接口的实际当前操作状态; RFC 1213 第 20 页中指定的以下值之一。
值 | 含义 |
---|---|
|
向上;准备传递数据包。 |
|
关闭。 |
|
在测试状态下,无法传递任何操作数据包。 |
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 |