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结构的 MSS 和 TcpHeaderOffset 成员,然后再将大型数据包发送到微型端口驱动程序。
对于 LSOV1,微型端口驱动程序在完成分段数据包的发送操作之前,在 TcpPayload 成员中写入 TCP 有效负载大小。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 在 NDIS 6.0 及更高版本中受支持。 |
标头 | ndis/nbllso.h (包括 ndis.h) |
另请参阅
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈