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

分段后每个数据包的最大段大小(以字节为单位)。 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 传输在将大型数据包发送到微型端口驱动程序之前,更新 MSSTcpHeaderOffsetNDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_LIST_INFO 结构的成员。

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

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

要求

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

另请参阅

NET_BUFFER

NET_BUFFER_LIST

NET_BUFFER_LIST_INFO

卸载大型 TCP 数据包的分段