TCP_OFFLOAD_STATE_DELEGATED结构 (ndischimney.h)

[TCP 烟囱卸载功能已弃用,不应使用。

TCP_OFFLOAD_STATE_DELEGATED结构包含 TCP 连接状态对象的委托变量。

语法

typedef struct _TCP_OFFLOAD_STATE_DELEGATED {
  OFFLOAD_STATE_HEADER         Header;
  TCP_OFFLOAD_CONNECTION_STATE State;
  USHORT                       Flags;
  ULONG                        RcvNxt;
  ULONG                        RcvWnd;
  ULONG                        SndUna;
  ULONG                        SndNxt;
  ULONG                        SndMax;
  ULONG                        SndWnd;
  ULONG                        MaxSndWnd;
  ULONG                        SendWL1;
  ULONG                        CWnd;
  ULONG                        SsThresh;
  USHORT                       SRtt;
  USHORT                       RttVar;
  ULONG                        TsRecent;
  ULONG                        TsRecentAge;
  ULONG                        TsTime;
  ULONG                        TotalRT;
  UCHAR                        DupAckCount;
  UCHAR                        SndWndProbeCount;
  struct {
    UCHAR ProbeCount;
    ULONG TimeoutDelta;
  } KeepAlive;
  struct {
    UCHAR Count;
    ULONG TimeoutDelta;
  } Retransmit;
  union {
    struct {
      PNET_BUFFER_LIST SendDataHead;
      PNET_BUFFER_LIST SendDataTail;
    };
    ULONG SendBacklogSize;
  };
  union {
    PNET_BUFFER_LIST BufferedData;
    ULONG            ReceiveBacklogSize;
  };
  ULONG                        DWnd;
} TCP_OFFLOAD_STATE_DELEGATED, *PTCP_OFFLOAD_STATE_DELEGATED;

成员

Header

OFFLOAD_STATE_HEADER结构。 NDIS 将标头Length 成员设置为TCP_OFFLOAD_STATE_DELEGATED结构的大小(以字节为单位)。 标头RecognizedOptions 成员保留。

State

TCP 连接的当前状态 (将 RFC 793) 视为以下TCP_OFFLOAD_CONNECTION_STATE值之一:

TcpConnectionClosed

无连接状态。

TcpConnectionListen

正在等待来自任何远程 TCP 和端口的连接请求。

TcpConnectionSynSent

在发送连接请求后等待匹配的连接请求。

TcpConnectionSynRcvd

在收到并发送连接请求后等待确认连接请求确认。

TcpConnectionEstablished

打开的连接:接收的数据可以传递给用户。 连接的数据传输阶段的正常状态。

TcpConnectionFinWait1

等待来自远程 TCP 的连接终止请求,或确认以前发送的连接终止请求。

TcpConnectionFinWait2

正在等待来自远程 TCP 的连接终止请求。

TcpConnectionCloseWait

正在等待本地用户的连接终止请求。

TcpConnectionClosing

正在等待来自远程 TCP 的连接终止请求确认。

TcpConnectionLastAck

等待之前发送到远程 TCP 的连接终止请求的确认,其中包括其连接终止请求的确认。

TcpConnectionTimeWait

等待足够的时间传递,以确保远程 TCP 收到其连接终止请求的确认。

请注意,当连接处于 TcpConnectionClosed、TcpConnectionListenTcpConnectionSynRcvd 之外的任何状态时,主机堆栈可以卸载 TCP 连接,

TcpConnectionSynSentTcpConnectionTimeWait 状态。 无论连接状态如何,主机堆栈都可以查询、更新、失效或终止 TCP 连接。

Flags

预留给系统使用。

RcvNxt

下一接收段的序列号 (请参阅 RCV。RFC 793) 中的下一步。

RcvWnd

接收窗口大小(以字节为单位) (请参阅 RCV。RFC 793) 中的 WND。

SndUna

未确认数据的第一个字节的序列号 (请参阅 SND。RFC 793) 中的 UNA。 有关详细信息,请参阅 发送包含要重新传输的数据的数据

SndNxt

要在连接上发送的下一个字节的序列号 (请参阅 SND。RFC 793) 中的 NXT。 有关详细信息,请参阅 发送包含要重新传输的数据的数据

SndMax

在连接上发送的最大序列号。 有关详细信息,请参阅 发送包含要重新传输的数据的数据

SndWnd

发送窗口大小(以字节为单位) (请参阅 SND。RFC 793) 中的 WND。

MaxSndWnd

最大发送窗口大小(以字节为单位), (请参阅 RFC 813) 。

SendWL1

用于上一个窗口更新的段序列号 (请参阅 SND。RFC 793) 中的 WL1。

CWnd

拥塞窗口大小(以字节为单位) (在 RFC 2581) 中看到 cwnd。

SsThresh

慢启动阈值(以字节为单位) (RFC 2581) 中看到 ssthresh。

SRtt

平滑往返时间(以时钟周期为单位), (RFC 793 和 2988) 中看到 SRTT。 根据每个连接进行维护,因为它考虑到路径、主机和有时应用程序行为。

RttVar

往返时间变化(以时钟周期为单位) (RFC 2988) 中看到 RTTVAR。

TsRecent

要在下一个 ACK 中发送的时间戳值 (请参阅 TS。RFC 1323)

TsRecentAge

自收到最新时间戳以来,时钟周期的时间长度 (见 RFC 1323) 。

TsTime

调整后的时间戳的当前值。

TotalRT

已重新传输当前 TCP 段的总时间(以时钟周期为单位)。

DupAckCount

已接受相同序列号的 ACK 数 (见 RFC 1323) 。

SndWndProbeCount

当前发送窗口探测轮次。 有关发送窗口探测轮的说明,请参阅 持久计时器

KeepAlive

此成员是包含以下成员的联合:

KeepAlive.ProbeCount

发送的未收到响应的保留探测数 (看到 RFC 1122) 。

KeepAlive.TimeoutDelta

剩余的时间(以时钟周期为单位)直到下一个保留超时 (看到 RFC 1122) 。 请注意,在卸载 TCP 连接后立即的值 -1 表示在卸载连接时,保持计时器未运行。 如果卸载目标的保留计时器未运行,则在响应对 MiniportQueryOffload 函数或 MiniportTerminateOffload 函数的调用时,卸载目标应在此成员中返回 -1。

Retransmit

此成员是包含以下成员的联合:

Retransmit.Count

已发送的重新传输数 (请参阅 RFC 2581) 。

Retransmit.TimeoutDelta

时钟周期中剩余的时间,直到下一次重新传输超时, (看到 RFC 2581) 。 请注意,在卸载 TCP 连接后立即的值 -1 表示重新传输计时器在卸载连接时未运行。 重新传输计时器未运行,因为连接卸载时连接上没有未完成的发送数据。 如果卸载目标的重新传输计时器未运行,则在响应对 MiniportQueryOffload 函数或 MiniportTerminateOffload 函数的调用时,卸载目标应在此成员中返回 -1。

SendDataHead

指向 NET_BUFFER_LIST 结构的指针。 此NET_BUFFER_LIST结构位于 由 NetBufferListChain 成员指向的链接列表中 NDIS_MINIPORT_OFFLOAD_BLOCK_LIST 结构,紧接在TCP_OFFLOAD_STATE_DELEGATED结构之前。 如果 NetBufferListChain 指针为 NULLSendDataHead 并不重要。

SendDataHead 指针指向第一个NET_BUFFER_LIST结构,该结构NET_BUFFER结构已缓冲与之关联的发送数据。

此变量仅在启动卸载或终止卸载操作中使用。 有关如何使用此变量的详细信息,请参阅 在卸载操作期间和卸载操作后处理未完成的发送数据 ,并在 终止卸载操作期间处理未完成的发送数据

SendDataTail

指向 NET_BUFFER_LIST 结构的指针。 此NET_BUFFER_LIST结构位于链接列表中,该列表由紧邻TCP_OFFLOAD_STATE_DELEGATED结构之前的NDIS_MINIPORT_OFFLOAD_BLOCK_LIST结构的 NetBufferListChain 成员指向。 如果 NetBufferListChain 指针为 NULL,SendDataTail 并不重要。

SendDataTail 指针指向最后一个NET_BUFFER_LIST结构,其NET_BUFFER结构已缓冲与之关联的发送数据。

此变量仅在启动卸载或终止卸载操作中使用。 有关如何使用此变量的详细信息,请参阅 在卸载操作期间和卸载操作后处理未完成的发送数据 以及 处理终止卸载操作期间未完成的发送数据

SendBacklogSize

卸载目标指定此值以指示主机堆栈在卸载目标上应具有未完成的数据字节数,以获得最佳性能。 (这是传递给卸载目标的发送字节数,但尚未由卸载目标完成。) 卸载目标用于计算发送积压工作大小的特定变量和算法特定于实现。 发送积压工作大小可以是连接、接口带宽和其他参数的往返时间函数 (RTT) 。 例如,卸载目标可以使用最小带宽/延迟产品和播发的接收窗口。 但是,请注意,发送积压工作大小不会因当前在连接上发送的数据字节数而异。

主机堆栈可以查询 TCP 委托状态,以获取发送积压工作大小。 In addition, the offload target can indicate a change in the send backlog size by calling the NdisTcpOffloadEventHandler 函数。

如果卸载目标不支持发送积压工作大小功能,则必须在查询连接的 TCP 委托状态时,将0xFFFFFFFF的值写入 SendBacklogSizeSendBacklogSize 变量不用于终止卸载操作。

BufferedData

指向缓冲接收数据的指针。 卸载 TCP 连接时,主机堆栈可以将此类数据传递到卸载目标。 (有关详细信息,请参阅 在卸载操作期间和卸载后处理缓冲接收数据。) 卸载目标在上传 TCP 连接时可以将此类数据传递到主机堆栈。 (有关详细信息,请参阅 在终止卸载操作期间处理缓冲接收数据。)

ReceiveBacklogSize

卸载目标指定此值以指示卸载 TCP 连接的卸载目标中缓冲的接收数据字节数。 主机堆栈可以查询连接的 TCP 委托状态以获取此值。 主机堆栈使用此值在连接上发布一个或多个接收请求,这些请求足以容纳所有缓冲数据。

如果卸载目标不支持接收积压工作大小功能,则应将0xFFFFFFFF的值写入 ReceiveBacklogSize

DWnd

注解

主机堆栈在将这些变量卸载到卸载目标时为 TCP 委托变量提供初始值。 卸载后,TCP 委托变量由卸载目标拥有和维护。 只有卸载目标可以更改卸载的 TCP 委托变量的值。 卸载目标不会通知主机堆栈对卸载的 TCP 委托变量的值所做的更改。 但是,主机堆栈可以查询卸载的 TCP 委托变量的值,这会导致 NDIS 调用卸载目标的 MiniportQueryOffload 函数。 当主机堆栈通过导致 NDIS 调用卸载目标的卸载来终止 TCP 连接状态对象的卸载时 MiniportTerminateOffload 函数,卸载目标会将终止的 TCP 连接状态对象中的 TCP 委托变量的值传回主机堆栈。

传递给卸载目标时,TCP_OFFLOAD_STATE_DELEGATED结构与 NDIS_MINIPORT_OFFLOAD_BLOCK_LIST 结构,其中包含格式化为 NDIS_OBJECT_HEADER 结构的标头。 在本例中,NDIS_OBJECT_HEADER结构的 Revision 成员指定TCP_OFFLOAD_STATE_DELEGATED结构的修订号。

要求

   
Header ndischimney.h (包括 Ndischimney.h)

另请参阅

MiniportQueryOffload

MiniportTerminateOffload

NDIS_OBJECT_HEADER

OFFLOAD_STATE_HEADER

TCP_OFFLOAD_STATE_CACHED

TCP_OFFLOAD_STATE_CONST