MIB_IPINTERFACE_ROW 结构 (netioapi.h)

MIB_IPINTERFACE_ROW结构在网络接口上存储特定 IP 地址系列的接口管理信息。

语法

typedef struct _MIB_IPINTERFACE_ROW {
  ADDRESS_FAMILY                 Family;
  NET_LUID                       InterfaceLuid;
  NET_IFINDEX                    InterfaceIndex;
  ULONG                          MaxReassemblySize;
  ULONG64                        InterfaceIdentifier;
  ULONG                          MinRouterAdvertisementInterval;
  ULONG                          MaxRouterAdvertisementInterval;
  BOOLEAN                        AdvertisingEnabled;
  BOOLEAN                        ForwardingEnabled;
  BOOLEAN                        WeakHostSend;
  BOOLEAN                        WeakHostReceive;
  BOOLEAN                        UseAutomaticMetric;
  BOOLEAN                        UseNeighborUnreachabilityDetection;
  BOOLEAN                        ManagedAddressConfigurationSupported;
  BOOLEAN                        OtherStatefulConfigurationSupported;
  BOOLEAN                        AdvertiseDefaultRoute;
  NL_ROUTER_DISCOVERY_BEHAVIOR   RouterDiscoveryBehavior;
  ULONG                          DadTransmits;
  ULONG                          BaseReachableTime;
  ULONG                          RetransmitTime;
  ULONG                          PathMtuDiscoveryTimeout;
  NL_LINK_LOCAL_ADDRESS_BEHAVIOR LinkLocalAddressBehavior;
  ULONG                          LinkLocalAddressTimeout;
  ULONG                          ZoneIndices[ScopeLevelCount];
  ULONG                          SitePrefixLength;
  ULONG                          Metric;
  ULONG                          NlMtu;
  BOOLEAN                        Connected;
  BOOLEAN                        SupportsWakeUpPatterns;
  BOOLEAN                        SupportsNeighborDiscovery;
  BOOLEAN                        SupportsRouterDiscovery;
  ULONG                          ReachableTime;
  NL_INTERFACE_OFFLOAD_ROD       TransmitOffload;
  NL_INTERFACE_OFFLOAD_ROD       ReceiveOffload;
  BOOLEAN                        DisableDefaultRoutes;
} MIB_IPINTERFACE_ROW, *PMIB_IPINTERFACE_ROW;

成员

Family

类型: ADDRESS_FAMILY

地址系列。 Winsock2.h 头文件中列出了地址系列的可能值。 请注意,AF_地址系列和PF_协议系列常量的值 (相同,例如 ,AF_INETPF_INET) ,因此可以使用任一常量。

在 Windows Vista 和更高版本以及Windows SDK上,头文件的组织方式已更改,Ws2def.h 头文件中定义了此成员的可能值。 请注意, Ws2def.h 头文件会自动包含在 Winsock2.h 中,永远不应直接使用。

当前支持的值 是 AF_INETAF_INET6,它们是 IPv4 和 IPv6 的 Internet 地址系列格式。

含义
AF_UNSPEC
0
地址系列未指定。
AF_INET
2
Internet 协议版本 4 (IPv4) 地址系列。
AF_INET6
23
Internet 协议版本 6 (IPv6) 地址系列。

InterfaceLuid

类型: NET_LUID

网络接口的本地唯一标识符 (LUID) 。

InterfaceIndex

类型: NET_IFINDEX

网络接口的本地索引值。 当网络适配器被禁用并随后启用时,或者在其他情况下,此索引值可能会更改,并且不应被视为永久性。

MaxReassemblySize

类型: ULONG

分段 IP 数据包的最大重新组合大小(以字节为单位)。 此成员当前设置为零,并保留供将来使用。

InterfaceIdentifier

类型: ULONG64

保留供将来使用。 此成员当前设置为零。

MinRouterAdvertisementInterval

类型: ULONG

此 IP 接口上的最小路由器播发间隔(以毫秒为单位)。 对于 IPv6,此成员默认为 200。 仅当 AdvertisingEnabled 成员设置为 TRUE 时,此成员才适用。

MaxRouterAdvertisementInterval

类型: ULONG

此 IP 接口上的最大路由器播发间隔(以毫秒为单位)。 对于 IPv6,此成员默认为 600。 仅当 AdvertisingEnabled 成员设置为 TRUE 时,此成员才适用。

AdvertisingEnabled

类型: BOOLEAN

一个 值,该值指示是否在此 IP 接口上启用了路由器播发。 IPv6 的默认设置是,仅当接口配置为充当路由器时,才会启用路由器播发。 IPv4 的默认设置是禁用路由器播发。

ForwardingEnabled

类型: BOOLEAN

一个 值,该值指示是否在此 IP 接口上启用了 IP 转发。

WeakHostSend

类型: BOOLEAN

一个 值,该值指示是否在此 IP 接口上启用了弱主机发送模式。

WeakHostReceive

类型: BOOLEAN

一个 值,该值指示是否在此 IP 接口上启用了弱主机接收模式。

UseAutomaticMetric

类型: BOOLEAN

一个 值,该值指示 IP 接口是否使用自动指标。

UseNeighborUnreachabilityDetection

类型: BOOLEAN

一个 值,该值指示是否在此 IP 接口上启用了邻居不可访问性检测。

ManagedAddressConfigurationSupported

类型: BOOLEAN

一个 值,该值指示 IP 接口是否支持使用 DHCP 进行托管地址配置。

OtherStatefulConfigurationSupported

类型: BOOLEAN

一个 值,该值指示 IP 接口是否支持其他有状态配置 (路由配置,例如) 。

AdvertiseDefaultRoute

类型: BOOLEAN

一个 值,该值指示 IP 接口是否播发默认路由。 仅当 AdvertisingEnabled 成员设置为 TRUE 时,此成员才适用。

RouterDiscoveryBehavior

类型: NL_ROUTER_DISCOVERY_BEHAVIOR

路由器发现行为。 此成员可以是 Nldef.h 头文件中定义的 NL_ROUTER_DISCOVERY_BEHAVIOR 枚举类型的值之一。 RFC 2461 中介绍了该成员。 有关详细信息,请参阅 http://www.ietf.org/rfc/rfc2461.txt

含义
RouterDiscoveryDisabled
0
路由器发现已禁用。
RouterDiscoveryEnabled
1
已启用路由器发现。 这是 IPv6 的默认值。
RouterDiscoveryDhcp
2
路由器发现基于 DHCP 进行配置。 这是 IPv4 的默认值。
RouterDiscoveryUnchanged
-1
当路由器发现的值应保持不变时,设置 IP 接口的属性时,将使用此值。

DadTransmits

类型: ULONG

对暂定 IP 单播地址执行重复地址检测时发送的连续消息数。 如果值为零,则表示未对暂定 IP 地址执行重复地址检测。 值为 1 表示没有后续重新传输的单个传输。 对于 IPv4,此成员的默认值为 3。 对于 IPv6,此成员的默认值为 1。 对于 IPv6,这些消息将作为邻居请求请求发送。 此成员在 RFC 2462 中定义为 DupAddrDetectTransmits。 有关详细信息,请参阅 http://www.ietf.org/rfc/rfc2462.txt

BaseReachableTime

类型: ULONG

随机可访问时间的基数(以毫秒为单位)。 RFC 2461 中介绍了该成员。 有关详细信息,请参阅 http://www.ietf.org/rfc/rfc2461.txt

RetransmitTime

类型: ULONG

邻居请求超时,以毫秒为单位。 RFC 2461 中介绍了该成员。 有关详细信息,请参阅 http://www.ietf.org/rfc/rfc2461.txt

PathMtuDiscoveryTimeout

类型: ULONG

路径 MTU 发现超时,以毫秒为单位。

LinkLocalAddressBehavior

类型: NL_LINK_LOCAL_ADDRESS_BEHAVIOR

链接本地地址行为。 此成员可以是 Nldef.h 头文件中定义的 NL_LINK_LOCAL_ADDRESS_BEHAVIOR 枚举类型的值之一。

含义
LinkLocalAlwaysOff
0
切勿使用链接本地 IP 地址。
LinkLocalDelayed
1
仅当没有其他地址可用时,才使用链接本地 IP 地址。 这是 IPv4 接口的默认设置。
LinkLocalAlwaysOn
2
始终使用链接本地 IP 地址。 这是 IPv6 接口的默认设置。
LinkLocalUnchanged
-1
当链接本地地址行为的值应保持不变时,设置 IP 接口的属性时,将使用此值。

LinkLocalAddressTimeout

类型: ULONG

链接本地 IP 地址超时(以毫秒为单位)。

ZoneIndices[ScopeLevelCount]

类型: ULONG[ScopeLevelCount]

一个指定范围 ID 的区域部分的数组。

SitePrefixLength

类型: ULONG

IP 接口地址的站点前缀长度(以位为单位)。 IP 接口地址的站点前缀或网络部分的长度(以位为单位)。 对于 IPv4 地址,任何大于 32 的值都是非法值。 对于 IPv6 地址,任何大于 128 的值都是非法值。 值 255 通常用于表示非法值。

Metric

类型: ULONG

接口指标。 请注意,用于计算路由首选项的实际路由指标是MIB_IPFORWARD_ROW2结构的 Metric 成员中指定的路由指标偏移量与此成员中指定的接口指标的求和。

NlMtu

类型: ULONG

网络层 MTU 大小(以字节为单位)。

Connected

类型: BOOLEAN

一个 值,该值指示接口是否连接到网络接入点。

SupportsWakeUpPatterns

类型: BOOLEAN

一个 值,该值指定网络接口是否支持 LAN 唤醒。

SupportsNeighborDiscovery

类型: BOOLEAN

一个 值,该值指定 IP 接口是否支持邻居发现。

SupportsRouterDiscovery

类型: BOOLEAN

一个 值,该值指定 IP 接口是否支持路由器发现。

ReachableTime

类型: ULONG

可访问的超时,以毫秒为单位。

TransmitOffload

类型: NL_INTERFACE_OFFLOAD_ROD

一组标志,指示 IP 接口的传输卸载功能。 NL_INTERFACE_OFFLOAD_ROD结构在 Nldef.h 头文件中定义。

ReceiveOffload

类型: NL_INTERFACE_OFFLOAD_ROD

一组标志,指示 IP 接口的接收卸载功能。 NL_INTERFACE_OFFLOAD_ROD结构在 Nldef.h 头文件中定义。

DisableDefaultRoutes

类型: BOOLEAN

一个 值,该值指示是否应禁用在接口上使用默认路由。 VPN 客户端可以使用此成员来限制拆分隧道。

注解

MIB_IPINTERFACE_ROW结构在 Windows Vista 及更高版本上定义。

FamilyInterfaceLuidInterfaceIndex 成员唯一标识MIB_IPINTERFACE_ROW项。

当单播数据包到达主机时,IP 必须确定数据包是否在本地发往 (其目标与分配给主机) 接口的地址匹配。 遵循弱主机模型的 IP 实现接受任何发往本地的数据包,而不考虑接收数据包的接口。 如果数据包中的目标地址与分配给接收数据包的接口的地址匹配,则遵循强主机模型的 IP 实现仅接受本地目标数据包。 弱主机模型提供更好的网络连接。 但是,这也使主机容易受到基于多家庭的网络攻击。

Windows Server 2003 和 Windows XP 中的当前 IPv4 实现使用弱主机模型。 在这种情况下,所有单播数据包都发送出具有路由最低指标的接口。

Windows Vista 和更高版本上的 TCP/IP 堆栈支持 IPv4 和 IPv6 的强主机模型,并且默认情况下配置为使用强主机模式, (WeakHostReceiveWeakHostSend 成员设置为 FALSE) 。 在强主机模式下,可以通过将套接字绑定到特定接口的源地址,向没有路由最低指标的特定接口发送单播数据包。

Windows Vista 和更高版本上的 TCP/IP 堆栈可以配置为使用弱主机模型。

指标是分配给特定网络接口的 IP 路由的值,该值标识与使用该路由关联的成本。 例如,指标可以按链接速度、跃点计数或时间延迟进行值。 自动指标是 Windows XP 及更高版本上的一项功能,可自动为基于链接速度的本地路由配置指标。 在 Windows XP 及更高版本上 , (UseAutomaticMetric 设置为 TRUE) ,则默认启用自动指标功能。 还可以将其手动配置为将特定指标分配给 IP 路由。

当路由表包含同一目标的多个路由时,自动指标功能非常有用。 例如,具有 10 兆位网络接口和 100 兆位网络接口的计算机具有在两个网络接口上配置的默认网关。 当 UseAutomaticMetricTRUE 时,此功能可以强制所有发往 Internet 的流量使用可用的最快网络接口。

指标 成员中指定的 接口指标仅表示接口的指标。 完整的路由指标是添加到此接口上指定路由条目的 MIB_IPFORWARD_ROW2 结构的 Metric 成员中指定的路由指标偏移量的组合。

对具有不同安全要求的多个网络的无特权同时访问会产生安全漏洞,并允许无特权应用程序意外地在两个网络之间中继数据。 一个典型示例是同时访问虚拟专用网络 (VPN) 和 Internet。 Windows Server 2003 和 Windows XP 使用弱主机模型,其中 RAS 通过增加其他接口上所有默认路由的路由指标来阻止此类同时访问。 因此,所有流量都通过 VPN 接口路由,从而中断其他网络连接。

在 Windows Vista 及更高版本上,默认使用强主机模型。 如果使用 GetBestRoute2GetBestRoute 在路由查找中指定了源 IP 地址,则路由查找仅限于源 IP 地址的接口。 RAS 的路由指标修改不起作用,因为潜在路由列表甚至没有 VPN 接口的路由,从而允许流量发往 Internet。 可以使用 MIB_IPINTERFACE_ROW 结构的 DisableDefaultRoutes 成员在接口上使用默认路由来禁用。 VPN 客户端可以将此成员用作安全措施,以在 VPN 客户端不需要拆分隧道时限制拆分隧道。 VPN 客户端可以调用 SetIpInterfaceEntry 函数,以便在需要时将 DisableDefaultRoutes 成员设置为 TRUE 。 VPN 客户端可以通过调用 GetIpInterfaceEntry 函数来查询 DisableDefaultRoutes 成员的当前状态。

请注意, Netioapi.h 头文件会自动包含在 Iphlpapi.h 头文件中。 永远不应直接使用 Netioapi.h 头文件。

示例

若要查看检索 MIB_IPINTERFACE_TABLE 结构,然后输出此表中 MIB_IPINTERFACE_ROW 结构条目的几个成员的示例,请参阅 GetIpInterfaceTable 函数。

要求

要求
最低受支持的客户端 Windows Vista [仅限桌面应用]
最低受支持的服务器 Windows Server 2008 [仅限桌面应用]
标头 netioapi.h (包括 Iphlpapi.h)

另请参阅

GetBestRoute

GetBestRoute2

GetIpInterfaceEntry

GetIpInterfaceTable

MIB_IPFORWARD_ROW2

MIB_IPINTERFACE_TABLE

NET_LUID

NL_INTERFACE_OFFLOAD_ROD

SetIpInterfaceEntry