IFEntry 結構 (tcpioctl.h)
[此結構可能會在未來的 Windows 版本中改變或無法使用。]
描述 TCP/IP 介面,其與簡單網路管理通訊協定第 2 版第 2 版、 (SNMPv2) 標準一致,用於管理資訊基底的 TCP/IP 網路 () MIB-II) ,如因特網工程工作組 (IETF) 1213 (頁面 16 到 23 上的批注要求所指定。
語法
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 |
|
超通道 |
|
Fddi |
|
lapb |
|
Sdlc |
|
ds1 (T-1) |
|
e1 (歐洲等價 T-1) |
|
basicISDN |
|
primaryISDN (專屬序列) |
|
propPointToPointSerial |
|
Ppp |
|
softwareLoopback |
|
透過IP的 eon (CLNP [11]) |
|
乙太網路-3Mbit |
|
nsip (透過IP) 的 XNS |
|
名單 (泛型 SLIP) |
|
ultra (ULTRA 技術) |
|
ds3 (T-3) |
|
sip (SMDS) |
|
frame-relay (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;
規格需求
需求 | 值 |
---|---|
標頭 | tcpioctl.h |