(ndischimney.h) TCP_OFFLOAD_STATE_DELEGATED 结构

[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 将 HeaderLength 成员设置为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) 中的 NEXT。

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

已发送但未收到响应的 keepalive 探测数 (请参阅 RFC 1122) 。

KeepAlive.TimeoutDelta

到下一个保持超时 (看到 RFC 1122) 之前的剩余时间(以时钟周期为单位)。 请注意,在 TCP 连接卸载后紧接的值为 -1 表示卸载连接时,keepalive 计时器未运行。 如果卸载目标的 keepalive 计时器未运行,则在响应对 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 成员指向的链接列表中 接在TCP_OFFLOAD_STATE_DELEGATED结构之前的NDIS_MINIPORT_OFFLOAD_BLOCK_LIST结构。 如果 NetBufferListChain 指针为 NULL则 SendDataHead 不重要。

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 委托状态,以获取发送积压工作大小。 此外,卸载目标可以通过调用 来指示发送积压工作大小的变化 NdisTcpOffloadEventHandler 函数。

如果卸载目标不支持 send-backlog-size 功能,则当查询连接的 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