NDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_LIST_INFO 结构 (ndis/nbllso.h)

NDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_LIST_INFO结构指定用于将大型发送卸载 (LSO) 任务从 TCP/IP 传输卸载到微型端口适配器的信息。 NDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_LIST_INFO结构是NET_BUFFER_LIST信息的一部分。

语法

typedef struct _NDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_LIST_INFO {
  union {
    struct {
      ULONG Unused : 30;
      ULONG Type : 1;
      ULONG Reserved2 : 1;
    } Transmit;
    struct {
      ULONG MSS : 20;
      ULONG TcpHeaderOffset : 10;
      ULONG Type : 1;
      ULONG Reserved2 : 1;
    } LsoV1Transmit;
    struct {
      ULONG TcpPayload : 30;
      ULONG Type : 1;
      ULONG Reserved2 : 1;
    } LsoV1TransmitComplete;
    struct {
      ULONG MSS : 20;
      ULONG TcpHeaderOffset : 10;
      ULONG Type : 1;
      ULONG IPVersion : 1;
    } LsoV2Transmit;
    struct {
      ULONG Reserved : 30;
      ULONG Type : 1;
      ULONG Reserved2 : 1;
    } LsoV2TransmitComplete;
    PVOID Value;
  };
} NDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_LIST_INFO, *PNDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_LIST_INFO;

成员

Transmit

NDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_LIST_INFO 中的一个结构,用于指定传输信息并包含以下成员:

Transmit.Unused

一个 ULONG 值,该值指定为 NDIS 保留的未使用空间。

Transmit.Type

微型端口驱动程序应运行的卸载类型。 协议驱动程序将此成员设置为 NDIS_TCP_LARGE_SEND_OFFLOAD_V1_TYPE 以指定大型发送卸载版本 1 (LSOV1) 操作,或NDIS_TCP_LARGE_SEND_OFFLOAD_V2_TYPE指定大型发送卸载版本 2 (LSOV2) 操作。

Transmit.Reserved2

保留给 NDIS。

LsoV1Transmit

NDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_LIST_INFO 中的一个结构,它指定 LSO 传输信息并包含以下成员:

LsoV1Transmit.MSS

分段后每个数据包的最大段大小 (MSS) (以字节为单位)。 TCP/IP 传输在将大型 TCP 数据包传递到微型端口驱动程序进行分段之前写入此值。 每个传输段中的 TCP 有效负载大小不得超过此值。

LsoV1Transmit.TcpHeaderOffset

TCP 标头从 TCP 数据包的开头开始的偏移量(以字节为单位)。 微型端口驱动程序可以使用 TcpHeaderOffset 来确定 TCP 标头的位置,这样它们就不必分析 IP 标头。

LsoV1Transmit.Type

微型端口驱动程序应运行的卸载类型。 协议驱动程序将此成员设置为 NDIS_TCP_LARGE_SEND_OFFLOAD_V1_TYPE 以指定 LSOV1 操作,将设置为 NDIS_TCP_LARGE_SEND_OFFLOAD_V2_TYPE 以指定 LSOV2 操作。

LsoV1Transmit.Reserved2

保留给 NDIS。

LsoV1TransmitComplete

NDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_LIST_INFO 中的一个结构,它指定 LSO 传输完整信息,并包含以下成员:

LsoV1TransmitComplete.TcpPayload

网络接口卡 (NIC) 通过分段大型数据包创建的一组数据包中的 TCP 有效负载字节总数。 微型端口驱动程序在完成 LSO 数据包的发送之前写入 TCP 有效负载大小。

LsoV1TransmitComplete.Type

微型端口驱动程序执行的卸载类型。 微型端口驱动程序保留此值与过度分配的驱动程序提交数据包进行传输时的值相同。

LsoV1TransmitComplete.Reserved2

保留给 NDIS。

LsoV2Transmit

NDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_LIST_INFO 中的一个结构,它指定 LSOV2 传输信息并包含以下成员:

LsoV2Transmit.MSS

每个 TCP 段的 MSS(以字节为单位)。 TCP/IP 传输在将大型 TCP 数据包传递到微型端口驱动程序进行分段之前写入此值。

LsoV2Transmit.TcpHeaderOffset

TCP 标头从 TCP 数据包的开头开始的偏移量(以字节为单位)。 微型端口驱动程序可以使用 TcpHeaderOffset 来确定 TCP 标头的位置,这样它们就不必分析 IP 标头。

LsoV2Transmit.Type

微型端口驱动程序应运行的卸载类型。 协议驱动程序将此成员设置为 NDIS_TCP_LARGE_SEND_OFFLOAD_V1_TYPE 以指定 LSOV1 操作,将设置为 NDIS_TCP_LARGE_SEND_OFFLOAD_V2_TYPE 以指定 LSOV2 操作。

LsoV2Transmit.IPVersion

数据包的 IP 版本。 对于 IPv4 数据包, IPVersion 设置为 NDIS_TCP_LARGE_SEND_OFFLOAD_IPv4。 对于 IPv6 数据包, IPVersion 设置为 NDIS_TCP_LARGE_SEND_OFFLOAD_IPv6。

LsoV2TransmitComplete

NDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_LIST_INFO 中的一个结构,它指定 LSOV2 传输完整信息并包含以下成员:

LsoV2TransmitComplete.Reserved

通常,此成员是为 NDIS 保留的。 但是,当发送操作完成时,微型端口驱动程序必须将此成员设置为零。

LsoV2TransmitComplete.Type

微型端口驱动程序执行的卸载类型。 微型端口驱动程序保留此值与过度分配驱动程序提交数据包进行传输时的值相同。

例如,当发送操作完成时,微型端口驱动程序会将此成员设置为 NDIS_TCP_LARGE_SEND_OFFLOAD_V2_TYPE

LsoV2TransmitComplete.Reserved2

保留给 NDIS。

Value

LSO 信息的 PVOID 版本。 使用此成员访问原始信息,而不是特定字段。

注解

NDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_LIST_INFO 结构指定 LSOV1 和 LSOV2 操作的信息。 NDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_LIST_INFO结构是NET_BUFFER_LIST结构中包含的信息的一部分。

若要设置和获取 LSOV1 或 LSOV2 信息,请将 TcpLargeSendNetBufferListInfo 索引与 NET_BUFFER_LIST_INFO 宏一起使用。 NET_BUFFER_LIST_INFO 返回 ULONG 值 (而不是指向 ULONG 值的指针) 。

TCP/IP 传输先更新NDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_LIST_INFO结构的 MSSTcpHeaderOffset 成员,然后再将大型数据包发送到微型端口驱动程序。

对于 LSOV1,微型端口驱动程序在完成分段数据包的发送操作之前,在 TcpPayload 成员中写入 TCP 有效负载大小。

注意 包含 LSOv1 或 LSOv2 信息的任何 NET_BUFFER_LIST 结构也包含单个 NET_BUFFER 结构。
 

要求

要求
最低受支持的客户端 在 NDIS 6.0 及更高版本中受支持。
标头 ndis/nbllso.h (包括 ndis.h)

另请参阅

NET_BUFFER

NET_BUFFER_LIST

NET_BUFFER_LIST_INFO

卸载大型 TCP 数据包的段