NDIS_OFFLOAD_PARAMETERS 结构 (ntddndis.h)

NDIS_OFFLOAD_PARAMETERS 结构指定当前任务卸载配置设置,以响应 OID_TCP_OFFLOAD_PARAMETERS 的 OID 集请求。

语法

typedef struct _NDIS_OFFLOAD_PARAMETERS {
  NDIS_OBJECT_HEADER                 Header;
  UCHAR                              IPv4Checksum;
  UCHAR                              TCPIPv4Checksum;
  UCHAR                              UDPIPv4Checksum;
  UCHAR                              TCPIPv6Checksum;
  UCHAR                              UDPIPv6Checksum;
  UCHAR                              LsoV1;
  UCHAR                              IPsecV1;
  UCHAR                              LsoV2IPv4;
  UCHAR                              LsoV2IPv6;
  UCHAR                              TcpConnectionIPv4;
  UCHAR                              TcpConnectionIPv6;
  ULONG                              Flags;
  UCHAR                              IPsecV2;
  UCHAR                              IPsecV2IPv4;
  struct {
    UCHAR RscIPv4;
    UCHAR RscIPv6;
  };
  struct {
    UCHAR EncapsulatedPacketTaskOffload;
    UCHAR EncapsulationTypes;
  };
  union {
    struct {
      USHORT VxlanUDPPortNumber;
    } VxlanParameters;
    ULONG Value;
  } EncapsulationProtocolParameters;
  _ENCAPSULATION_PROTOCOL_PARAMETERS _ENCAPSULATION_PROTOCOL_PARAMETERS;
  struct {
    UCHAR IPv4;
    UCHAR IPv6;
  } UdpSegmentation;
  struct {
    UCHAR Enabled;
  } UdpRsc;
} NDIS_OFFLOAD_PARAMETERS, *PNDIS_OFFLOAD_PARAMETERS;

成员

Header

NDIS_OFFLOAD_PARAMETERS 结构的NDIS_OBJECT_HEADER结构。 将 Header 指定的结构的 Type 成员设置为 NDIS_OBJECT_TYPE_DEFAULT。

若要指示 NDIS_OFFLOAD_PARAMETERS 结构的版本,请将 Revision 成员设置为以下值之一:

含义
NDIS_OFFLOAD_PARAMETERS_REVISION_6
6
支持 NDIS 6.89 的 UdpRsc 成员。 将 Size 成员设置为 NDIS_SIZEOF_OFFLOAD_PARAMETERS_REVISION_6。
NDIS_OFFLOAD_PARAMETERS_REVISION_5
5
支持适用于 IPv4 的 UdpSegmentation 和用于 NDIS 6.83 的 IPv6。 将 Size 成员设置为 NDIS_SIZEOF_OFFLOAD_PARAMETERS_REVISION_5。
NDIS_OFFLOAD_PARAMETERS_REVISION_4
4
支持 NDIS 6.50 的 封装ProtocolParameters 及其嵌套 VxlanParameters 。 将 Size 成员设置为 NDIS_SIZEOF_OFFLOAD_PARAMETERS_REVISION_4。
NDIS_OFFLOAD_PARAMETERS_REVISION_3
3
支持 NDIS 6.30 的 RscIPv4RscIPv6EncapsulatedPacketTaskOffloadEncapsulationTypes 成员。 将 Size 成员设置为 NDIS_SIZEOF_OFFLOAD_PARAMETERS_REVISION_3。
NDIS_OFFLOAD_PARAMETERS_REVISION_2
2
支持 NDIS 6.1 的 IPsecV2IPsecV2IPv4Reserved1Reserved2 成员。 将 Size 成员设置为 NDIS_SIZEOF_OFFLOAD_PARAMETERS_REVISION_2。
NDIS_OFFLOAD_PARAMETERS_REVISION_1
1
NDIS 6.0 的原始版本。 将 Size 成员设置为 NDIS_SIZEOF_OFFLOAD_PARAMETERS_REVISION_1。

IPv4Checksum

微型端口适配器的 IPv4 校验和设置。 有关更多信息,请参见下面的“备注”部分。

TCPIPv4Checksum

TCP 数据包的微型端口适配器的 IPv4 校验和设置。 有关更多信息,请参见下面的“备注”部分。

UDPIPv4Checksum

UDP 数据包的微型端口适配器的 IPv4 校验和设置。 有关更多信息,请参见下面的“备注”部分。

TCPIPv6Checksum

TCP 数据包的微型端口适配器的 IPv6 校验和设置。 有关更多信息,请参见下面的“备注”部分。

UDPIPv6Checksum

UDP 数据包的微型端口适配器的 IPv6 校验和设置。 有关更多信息,请参见下面的“备注”部分。

LsoV1

大型发送卸载版本 1 (LSOV1) 微型端口适配器的设置。 此设置应为以下值之一:

含义
NDIS_OFFLOAD_PARAMETERS_NO_CHANGE 微型端口驱动程序不应更改当前设置。
NDIS_OFFLOAD_PARAMETERS_LSOV1_DISABLED LSOV1 已禁用。
NDIS_OFFLOAD_PARAMETERS_LSOV1_ENABLED LSOV1 已启用。

IPsecV1

Internet 协议安全性 (IPsec) 微型端口适配器的卸载设置。 此设置应为以下值之一:

含义
NDIS_OFFLOAD_PARAMETERS_NO_CHANGE 微型端口驱动程序不应更改当前设置。
NDIS_OFFLOAD_PARAMETERS_IPSECV1_DISABLED IPsec 卸载已禁用。
NDIS_OFFLOAD_PARAMETERS_IPSECV1_AH_ENABLED 应启用 IPsec 卸载身份验证标头 (AH) 功能进行传输和接收。
NDIS_OFFLOAD_PARAMETERS_IPSECV1_ESP_ENABLED 应启用 IPsec 卸载封装安全有效负载 (ESP) 功能,以便进行传输和接收。
NDIS_OFFLOAD_PARAMETERS_IPSECV1_AH_AND_ESP_ENABLED 为传输和接收启用了 IPsec 卸载 AH 和 ESP 功能。

LsoV2IPv4

IPv4 大型发送卸载版本 2 (LSOV2) 微型端口适配器的设置。 此设置应为以下值之一:

含义
NDIS_OFFLOAD_PARAMETERS_NO_CHANGE 微型端口驱动程序不应更改当前设置。
NDIS_OFFLOAD_PARAMETERS_LSOV2_DISABLED LSOV2 for IPv4 已禁用。
NDIS_OFFLOAD_PARAMETERS_LSOV2_ENABLED 已启用 LSOV2 for IPv4。

LsoV2IPv6

微型端口适配器的 IPv6 LSOV2 设置。 这些设置指定为以下值之一:

含义
NDIS_OFFLOAD_PARAMETERS_NO_CHANGE 微型端口驱动程序不应更改当前设置。
NDIS_OFFLOAD_PARAMETERS_LSOV2_DISABLED IPv6 的 LSOV2 处于禁用状态。
NDIS_OFFLOAD_PARAMETERS_LSOV2_ENABLED 已启用 LSOV2 for IPv6。

TcpConnectionIPv4

微型端口适配器的 IPv4 连接卸载设置。 这些设置指定为以下值之一:

含义
NDIS_OFFLOAD_PARAMETERS_NO_CHANGE 微型端口驱动程序不应更改当前设置。

TcpConnectionIPv6

微型端口适配器的 IPv6 连接卸载设置。 这些设置指定为以下值之一:

含义
NDIS_OFFLOAD_PARAMETERS_NO_CHANGE 微型端口驱动程序不应更改当前设置。

Flags

一组可以与按位 OR 运算组合的标志。 将此成员设置为零或以下值:

含义
NDIS_OFFLOAD_PARAMETERS_SKIP_REGISTRY_UPDATE
0x00000001
允许仅在运行时禁用 UDP 接收段合并卸载 (URO) 。 使用此标志所做的更改不会保存到注册表中。

IPsecV2

Internet 协议安全性 (IPsec) 卸载支持 IPv6 和 IPv4 的微型端口适配器的版本 2 设置。 此成员指定 IPv6 和 IPv4 支持的设置。 此设置应为以下值之一:

含义
NDIS_OFFLOAD_PARAMETERS_NO_CHANGE 微型端口驱动程序不应更改当前设置。
NDIS_OFFLOAD_PARAMETERS_IPSECV2_DISABLED IPsec 卸载版本 2 已禁用。
NDIS_OFFLOAD_PARAMETERS_IPSECV2_AH_ENABLED 应为传输和接收启用 IPsec 卸载版本 2 身份验证标头 (AH) 功能。
NDIS_OFFLOAD_PARAMETERS_IPSECV2_ESP_ENABLED 应为传输和接收启用 IPsec 卸载版本 2 封装安全有效负载 (ESP) 功能。
NDIS_OFFLOAD_PARAMETERS_IPSECV2_AH_AND_ESP_ENABLED 为传输和接收启用了 IPsec 卸载版本 2 AH 和 ESP 功能。

IPsecV2IPv4

Internet 协议安全性 (IPsec) 卸载支持 IPv4 且不支持 IPv6 的微型端口适配器的版本 2 设置。 如果微型端口驱动程序支持 IPv6,则 IPsecV2 成员指定 IPv4 设置,并且不使用此成员。 此设置应为以下值之一:

含义
NDIS_OFFLOAD_PARAMETERS_NO_CHANGE 微型端口驱动程序不应更改当前设置。
NDIS_OFFLOAD_PARAMETERS_IPSECV2_DISABLED IPsec 卸载版本 2 已禁用。
NDIS_OFFLOAD_PARAMETERS_IPSECV2_AH_ENABLED 应为传输和接收启用 IPsec 卸载版本 2 身份验证标头 (AH) 功能。
NDIS_OFFLOAD_PARAMETERS_IPSECV2_ESP_ENABLED 应为传输和接收启用 IPsec 卸载版本 2 封装安全有效负载 (ESP) 功能。
NDIS_OFFLOAD_PARAMETERS_IPSECV2_AH_AND_ESP_ENABLED 为传输和接收启用了 IPsec 卸载版本 2 AH 和 ESP 功能。

RscIPv4

指示 IPv4 的接收段合并状态。

含义
NDIS_OFFLOAD_PARAMETERS_NO_CHANGE RSC 状态保持不变。
NDIS_OFFLOAD_PARAMETERS_RSC_ENABLED RSC 状态已启用。
NDIS_OFFLOAD_PARAMETERS_RSC_DISABLED RSC 状态已禁用。

RscIPv6

指示 IPv6 的接收段合并状态。

含义
NDIS_OFFLOAD_PARAMETERS_NO_CHANGE RSC 状态保持不变。
NDIS_OFFLOAD_PARAMETERS_RSC_ENABLED RSC 状态已启用。
NDIS_OFFLOAD_PARAMETERS_RSC_DISABLED RSC 状态已禁用。

EncapsulatedPacketTaskOffload

协议驱动程序按如下所示设置 EncapsulatedPacketTaskOffload

注意:对于接收端卸载(如 VMQ 和 RSS),协议驱动程序会发送其他集 OID 来启用和配置卸载参数, (例如队列、哈希和间接表) 。 EncapsulatedPacketTaskOffload 成员是对这些 OID 的补充,并指示 NIC 也为封装的数据包执行这些卸载。

含义
NDIS_OFFLOAD_SET_NO_CHANGE
0
NVGRE 和 VXLAN 任务卸载状态保持不变。
NDIS_OFFLOAD_SET_ON
1
启用 NVGRE 和 VXLAN 任务卸载。
NDIS_OFFLOAD_SET_OFF
2
禁用 NVGRE 和 VXLAN 任务卸载。

EncapsulationTypes

仅当 EncapsulatedPacketTaskOffload 设置为 NDIS_OFFLOAD_SET_ON 时,此字段才有效。 如果 EncapsulatedPacketTaskOffload 成员未设置为 NDIS_OFFLOAD_SET_ON,则此成员为零。 协议驱动程序必须将 EncapsulationTypes 设置为它所需的封装类型所对应的标志的按位 OR。 它可以从以下各项中选择标志:

含义
NDIS_ENCAPSULATION_TYPE_GRE_MAC
0x00000001
指定 GRE MAC 封装 (NVGRE) 。
NDIS_ENCAPSULATION_TYPE_VXLAN
0x00000002
指定 VXLAN 封装。

EncapsulationProtocolParameters

描述 VXLAN 封装的封装参数的联合。

如果微型端口驱动程序将 VxlanUDPPortNumerConfigurable 播发为 TRUE,则协议驱动程序可以将 EncapsulationProtocolParameters.VxlanParameters.VxlanUDPPortNumber 设置为非 0 值。 微型端口驱动程序必须在成功 OID 后使用此端口号来匹配和生成 VXLAN 帧,并在其功能中播发更新的值。 如果协议驱动程序传递的值为 0,则微型端口驱动程序继续使用从标准化关键字 (keyword) 初始化的端口号。

EncapsulationProtocolParameters.VxlanParameters

包含 VxlanUDPPortNumber 的结构

EncapsulationProtocolParameters.VxlanParameters.VxlanUDPPortNumber

VXLAN 目标端口值。 默认情况下,此值设置为 IANA 分配的值 4789。 如果微型端口驱动程序支持 NDIS_OFFLOAD 结构中播发的可配置端口号,则协议驱动程序可以发出 OID_TCP_OFFLOAD_PARAMETERS OID,以便在 VxlanUDPPortNumber 中启用具有不同值的NDIS_ENCAPSULATION_TYPE_VXLAN。 微型端口驱动程序必须使用 VxlanUDPPortNumber 来确定用于执行接收卸载的 VXLAN 封装数据包。

EncapsulationProtocolParameters.Value

如果未将 EncapsulationTypes 设置为 NDIS_ENCAPSULATION_TYPE_VXLAN,则为端口值。

_ENCAPSULATION_PROTOCOL_PARAMETERS

封装ProtocolParameters 的类型名称。

UdpSegmentation

描述微型端口适配器的 UDP 分段卸载 (USO) 设置的结构。

UdpSegmentation.IPv4

IPv4 UDP 分段卸载 (微型端口适配器的 USO) 设置。 此设置应为以下值之一:

含义
NDIS_OFFLOAD_PARAMETERS_NO_CHANGE 微型端口驱动程序不应更改当前设置。
NDIS_OFFLOAD_PARAMETERS_UDP_SEG_DISABLED 禁用 USO。
NDIS_OFFLOAD_PARAMETERS_UDP_SEG_ENABLED 已启用 USO。

UdpSegmentation.IPv6

IPv6 UDP 分段卸载 (微型端口适配器的 USO) 设置。 此设置应为以下值之一:

含义
NDIS_OFFLOAD_PARAMETERS_NO_CHANGE 微型端口驱动程序不应更改当前设置。
NDIS_OFFLOAD_PARAMETERS_UDP_SEG_DISABLED 禁用 USO。
NDIS_OFFLOAD_PARAMETERS_UDP_SEG_ENABLED 已启用 USO。

UdpRsc

描述微型端口适配器的 UDP 接收段合并卸载 (URO) 设置的结构。

UdpRsc.Enabled

微型端口适配器的 URO 设置。 此设置应为以下值之一:

含义
NDIS_OFFLOAD_PARAMETERS_UDP_RSC_NO_CHANGE
0
微型端口驱动程序不应更改当前设置。
NDIS_OFFLOAD_PARAMETERS_UDP_RSC_DISABLED
1
URO 已禁用。
NDIS_OFFLOAD_PARAMETERS_UDP_RSC_ENABLED
2
已启用 URO。

注解

为了响应 OID_TCP_OFFLOAD_PARAMETERS OID 集请求,微型端口驱动程序使用 NDIS_OFFLOAD_PARAMETERS 结构中的设置来设置微型端口适配器的当前配置。

NDIS 在卸载标准化关键字的注册表中保留请求的设置。 当 NDIS 重启微型端口适配器时,微型端口驱动程序将读取卸载标准化关键字,并使用它们来设置 NIC 的默认卸载配置。

若要访问校验和卸载设置,请使用 NDIS_OFFLOAD_PARAMETERS 结构的以下成员:

IPv4Checksum

TCPIPv4Checksum

UDPIPv4Checksum

TCPIPv6Checksum

UDPIPv6Checksum

上述成员可以具有以下值之一:

NDIS_OFFLOAD_PARAMETERS_NO_CHANGE
微型端口驱动程序不应更改当前设置。

NDIS_OFFLOAD_PARAMETERS_TX_RX_DISABLED
禁用成员指定的功能。

NDIS_OFFLOAD_PARAMETERS_TX_ENABLED_RX_DISABLED
为传输启用成员指定的功能,并为接收禁用该功能。

NDIS_OFFLOAD_PARAMETERS_RX_ENABLED_TX_DISABLED
为接收启用成员指定的功能,并为传输禁用该功能。

NDIS_OFFLOAD_PARAMETERS_TX_RX_ENABLED
为传输和接收启用成员指定的功能。

要求

要求
最低受支持的客户端 Windows Vista,在 NDIS 6.0 及更高版本中受支持。
最低受支持的服务器 Windows Server 2008
标头 ntddndis.h (包括 Ndis.h)

另请参阅

NDIS_OBJECT_HEADER

OID_TCP_OFFLOAD_HARDWARE_CAPABILITIES

OID_TCP_OFFLOAD_PARAMETERS