Enumeration Keywords

NDIS 6.0 及更高版本的 NDIS 为网络设备的微型端口驱动程序提供标准化枚举关键字。 枚举关键字与在菜单中显示为列表的值相关联。

下面的示例演示枚举关键字的 INF 文件定义。

HKR, Ndi\params\<SubkeyName>, ParamDesc, 0, "%<SubkeyName>%"
HKR, Ndi\params\<SubkeyName>, Type, 0, "enum"
HKR, Ndi\params\<SubkeyName>, Default, 0, "3"
HKR, Ndi\params\<SubkeyName>, Optional, 0, "0"
HKR, Ndi\params\<SubkeyName>\enum, "0", 0, "%Disabled%"
HKR, Ndi\params\<SubkeyName>\enum, "1", 0, "%Tx Enabled%"
HKR, Ndi\params\<SubkeyName>\enum, "2", 0, "%Rx Enabled%"
HKR, Ndi\params\<SubkeyName>\enum, "3", 0, "%Rx & Tx Enabled%"

常规枚举关键字为:

*SpeedDuplex
设备支持的速度和双工设置。 设备 INF 文件应仅列出关联设备支持的设置。 也就是说,对于仅支持全双工模式的以太网 10/100 设备,不应在关联的 INF 文件中列出千兆位或更高速度或半双工的设置。

未用枚举值 0 到 10 明确定义的速度值,可以直接设置为以 Mbps 表示的数值。 直接值必须至少为 1,000 Mbps(1 Gbps)及更高。 下面是一些直接指定速度的示例:

SpeedDuplex value Resulting speed
1,000 1 Gbps
10,000 10 Gbps
25,000 25 Gbps
50,000 50 Gbps
100,000 100 Gbps

*FlowControl
设备在发送或接收路径中启用或禁用流控制的功能。

注意 以太网设备目前支持流控制,并且 LAN 的 Windows 8 内置驱动程序默认已启用流控制。 当内核调试器附加到其中一个 LAN 适配器时,NIC 将开始将流控制暂停帧推送到网络。 大多数网络交换机将通过暂时关闭连接到同一中心的其他所有计算机的网络来做出反应。 这是一种常见的开发方案,最终用户体验既不可取,也难以诊断。

注意 客户端和服务器默认值不相同;请参阅下面的默认值表。

因此,在 Windows 8 及更高版本中,当在计算机上启用调试时,NDIS 将自动禁用流控制(例如,通过在命令行上键入 bcdedit /set debug )。 启用内核调试后,微型端口驱动程序调用 NdisReadConfiguration 并为 关键字 参数传递“*FlowControl”时,NDIS 将覆盖配置的值并返回零。

如果需要在调试时启用流控制,NDIS 会提供 AllowFlowControlUnderDebugger 注册表值,以便执行此作。 AllowFlowControlUnderDebugger 注册表值可防止 NDIS 禁用流控制,并允许 NIC 保留其配置的行为。 可以在以下注册表项下找到它:

HKEY_LOCAL_MACHINE\系统\CurrentControlSet\服务\NDIS\参数

将此注册表值设置为0x00000001。

如果不存在,可以使用名称 AllowFlowControlUnderDebugger 和类型 REG_DWORD 创建一个值,并将其设置为0x00000001。

*PriorityVLANTag
一个值,该值指示设备是否已启用或禁用为数据包优先级和虚拟 LAN(VLAN)插入 802.1Q 标记的功能。 此关键字不指示设备是启用或禁用数据包优先级还是 VLAN 标记。 相反,它描述了以下内容:

  • 设备是否在发送操作期间插入 802.1Q 标记
  • 在 NET_BUFFER_LIST 的带外信息(OOB 信息)中是否提供了 802.1Q 标记信息
  • 设备是否在接收操作期间将 802.1Q 标记复制到 OOB

微型端口驱动程序应从所有接收数据包中删除 802.1Q 标头,而不考虑 *PriorityVLANTag 设置。 如果 802.1Q 标头保留在数据包中,则其他驱动程序可能无法正确分析数据包。

如果在接收路径上启用了 Rx 标志,微型端口驱动程序应将已删除的 802.1Q 标头复制到 OOB 中。

否则,如果禁用 Rx 标志,微型端口驱动程序不应将已删除的 802.1Q 标头复制到 OOB 中。

如果在传输路径上启用了 Tx 标志,微型端口驱动程序应执行以下作:

  • 将 802.1Q 标头插入到每个传出数据包中,并将其填满 OOB 中的数据(如果 OOB 中存在任何非零数据)。
  • NDIS_MINIPORT_ADAPTER_GENERAL_ATTRIBUTES中,播发适当的MacOptionsNDIS_MAC_OPTION_8021P_PRIORITYNDIS_MAC_OPTION_8021Q_VLAN)。

否则,如果禁用 Tx 标志,则:

  • 微型端口筛选器不应遵循 OOB 中的 802.1Q 信息,因此不会插入任何标记。
  • 微型端口筛选器不应在NDIS_MINIPORT_ADAPTER_GENERAL_ATTRIBUTES中声明合适的MacOptions

注意 如果微型端口驱动程序支持 NDIS 服务质量(QoS),则它还必须读取 *QOS 关键字值。 根据 *QOS 关键字值,*PriorityVLANTag 关键字值被不同地解释。 有关详细信息,请参阅 NDIS QoS 的标准化 INF 关键字

*InterruptModeration
一个值,该值描述设备是否启用或禁用中断控制。 中断调节算法依赖于设备。 设备制造商可以使用非标准化关键字来支持算法设置。 有关中断审查的详细信息,请参阅 中断审查

*RSS
一个值,描述设备是启用还是禁用接收方负载均衡(RSS)。 有关 RSS 的详细信息,请参阅 接收端缩放

*HeaderDataSplit
一个值,该值描述设备是启用还是禁用标头数据拆分。 有关标头数据拆分的详细信息,请参阅 Header-Data 拆分

以下关键字与连接卸载服务相关联:

*TCPConnectionOffloadIPv4

*TCPConnectionOffloadIPv6

有关连接卸载关键字的详细信息,请参阅 “使用注册表值启用和禁用连接卸载”。

以下关键字与任务卸载服务相关联:

*IPChecksumOffloadIPv4

*TCPChecksumOffloadIPv4

*TCPChecksumOffloadIPv6

*UDPChecksumOffloadIPv4

*UDPChecksumOffloadIPv6

*LsoV1IPv4

*LsoV2IPv4

注意 对同时支持通过 IPv4 的大型发送卸载版本 1(LSOv1)和 LSOv2 的设备,仅应在 INF 文件和注册表值中使用 *LsoV2IPv4 关键字。 例如,如果 *LsoV2IPv4 关键字出现在 INF 文件中, 并且 *LsoV1IPv4 关键字显示在注册表中(反之亦然), 则 *LsoV2IPv4 关键字始终优先。

*LsoV2IPv6

*IPsecOffloadV1IPv4

*IPsecOffloadV2

*IPsecOffloadV2IPv4

*TCPUDPChecksumOffloadIPv4

*TCPUDPChecksumOffloadIPv6

有关 TCP/IP 卸载关键字的详细信息,请参阅 “使用注册表值启用和禁用任务卸载”。

本主题末尾的表中的列描述枚举关键字的以下属性:

SubkeyName
必须在 INF 文件中指定且显示在注册表中的关键字的名称。

ParamDesc
SubkeyName 关联的显示文本。

Value
与列表中的每个选项关联的枚举整数值。 此值存储在 NDI\params\SubkeyName\中。

EnumDesc
与菜单中显示的每个值关联的显示文本。

Default
菜单的默认值。

下表列出了所有关键字,并描述了驱动程序必须用于上述属性的值。 有关关键字的详细信息,请在 WDK 文档中搜索关键字。

SubkeyName ParamDesc Value EnumDesc
*SpeedDuplex 速度和双工 0 (Default) Auto Negotiation
1 10 Mbps 半双工
2 10 Mbps 全双工
3 100 Mbps 半双工
4 100 Mbps 全双工
5 1.0 Gbps 半双工
6 1.0 Gbps 全双工
7 10 Gbps 全双工
8 20 Gbps 全双工
9 40 Gbps 全双工
10 100 Gbps 全双工
*FlowControl Flow Control 0 (服务器默认值) Tx 和 Rx 功能已禁用
1 Tx Enabled
2 Rx Enabled
3 (客户端默认值) 已启用 Rx 和 Tx
4 Auto Negotiation
*PriorityVLANTag 数据包优先级和 VLAN 0 数据包优先级和 VLAN 功能已禁用
1 已启用数据包优先级
2 VLAN Enabled
3 (Default) 已启用数据包优先级和VLAN
*InterruptModeration Interrupt Moderation 0 Disabled
1 (Default) Enabled
*RSS 接收方缩放 0 Disabled
1 (Default) Enabled
*HeaderDataSplit 标头数据拆分 0 (Default) Disabled
1 Enabled
*TCPConnectionOffloadIPv4 TCP 连接卸载(IPv4) 0 Disabled
1 (Default) Enabled
*TCPConnectionOffloadIPv6 TCP 连接卸载 (IPv6) 0 Disabled
1 (Default) Enabled
*IPChecksumOffloadIPv4 IPv4 校验和卸载 0 Disabled
1 Tx Enabled
2 Rx Enabled
3 (Default) 已启用 Rx 和 Tx
*TCPChecksumOffloadIPv4 TCP 校验和卸载 (IPv4) 0 Disabled
1 Tx Enabled
2 Rx Enabled
3 (Default) 已启用 Rx 和 Tx
*TCPChecksumOffloadIPv6 TCP 校验和卸载 (IPv6) 0 Disabled
1 Tx Enabled
2 Rx Enabled
3 (Default) 已启用 Rx 和 Tx
*UDPChecksumOffloadIPv4 UDP 校验和卸载 (IPv4) 0 Disabled
1 Tx Enabled
2 Rx Enabled
3 (Default) 已启用 Rx 和 Tx
*UDPChecksumOffloadIPv6 UDP 校验和卸载 (IPv6) 0 Disabled
1 Tx Enabled
2 Rx Enabled
3 (Default) 已启用 Rx 和 Tx
*LsoV1IPv4 大型发送卸载版本 1(IPv4) 0 Disabled
1 (Default) Enabled
*LsoV2IPv4 大型传输卸载版本 2(IPv4) 0 Disabled
1 (Default) Enabled
*LsoV2IPv6 大容量发送卸载版本 2 (IPv6) 0 Disabled
1 (Default) Enabled
*IPsecOffloadV1IPv4 IPsec 卸载版本 1 (IPv4) 0 Disabled
1 已启用身份验证标头
2 ESP Enabled
3 (Default) 已启用身份验证标头和 ESP
*IPsecOffloadV2 IPsec Offload 0 Disabled
1 已启用身份验证标头
2 ESP Enabled
3 (Default) 已启用身份验证标头和 ESP
*IPsecOffloadV2IPv4 IPsec 卸载功能(仅适用于 IPv4) 0 Disabled
1 已启用身份验证标头
2 ESP Enabled
3 (Default) 已启用身份验证标头和 ESP
*TCPUDPChecksumOffloadIPv4 TCP/UDP 校验和卸载 (IPv4) 0 Disabled
1 Tx Enabled
2 Rx Enabled
3 (Default) Tx 和 Rx 已启用
*TCPUDPChecksumOffloadIPv6 TCP/UDP 校验和卸载 (IPv6) 0 Disabled
1 Tx Enabled
2 Rx Enabled
3 (Default) Tx 和 Rx 已启用