Структура IFEntry (tcpioctl.h)
[Эта структура может быть изменена или недоступна в будущих версиях Windows.]
Описывает интерфейс TCP/IP в соответствии со стандартом SNMPv2 для базы сведений об управлении сетями для управления сетями (MIB-II), как указано в запросе комментариев IETF ( RFC) 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
Тип интерфейса в соответствии с физическими протоколами или протоколами связи непосредственно под уровнем сети в стеке протоколов. В следующей таблице перечислены возможные значения этого элемента if_type , перечисленные на страницах 18 и 19 rfc 1213.
Значение | Значение |
---|---|
|
other (т. е. ни одно из следующих) |
|
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 по IP-адресу [11]) |
|
Ethernet-3Mbit |
|
nsip (XNS по IP-адресу) |
|
slip (универсальный SLIP) |
|
Ultra (технологии ULTRA) |
|
ds3 (T-3) |
|
sip (SMDS) |
|
frame-relay(32) |
Включите файл заголовка Ipifcons.h из пакета Microsoft SDK для констант флагов, поддерживающих эти и дополнительные типы интерфейсов 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
Требуемое состояние интерфейса; одно из следующих значений, указанных на странице 20 RFC 1213.
Значение | Значение |
---|---|
|
Вверх; готовы к передаче пакетов. |
|
не работает. |
|
В тестовом состоянии, так что операционные пакеты не могут быть переданы. |
if_operstatus
Фактическое текущее рабочее состояние интерфейса; одно из следующих значений, указанных на странице 20 RFC 1213.
Значение | Значение |
---|---|
|
Вверх; готовы к передаче пакетов. |
|
не работает. |
|
В тестовом состоянии невозможно передать операционные пакеты. |
if_lastchange
Время в сотых долях секунды с момента последней инициализации части системы управления сетью, когда этот интерфейс вступил в свое фактическое текущее рабочее состояние. Если текущее состояние было введено до последней повторной инициализации подсистемы управления локальной сетью, этому элементу присваивается значение 0.
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 , в байтах без учета завершающего пустого символа.
if_descr[1]
Текстовая строка, содержащая сведения об этом интерфейсе, включая название производителя, название продукта и версию оборудования. Если строка не включена, размер буфера составляет 1 байт.
Комментарии
Из-за if_descr элемента переменной длины структура IFEntry не имеет фиксированного размера. Для выделения памяти для хранения фактического экземпляра структуры достаточно безопасный размер буфера можно вычислить следующим образом:
maxIFEntryLen = sizeof(IFEntry) + MAX_ADAPTER_DESCRIPTION_LENGTH + 1;
Требования
Требование | Значение |
---|---|
Заголовок | tcpioctl.h |