共用方式為


TCP_OFFLOAD_STATE_DELEGATED結構 (ndischimney.h)

[TCP chimney 卸除功能已被取代,不應使用。]

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結構的大小,以位元組為單位。 HeaderRecognizedOptions 成員是保留的。

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 收到其連線終止要求的通知。

請注意,當聯機處於 TcpConnectionClosedTcpConnectionListen、TcpConnectionSynRcvd 以外的任何狀態時,主機堆棧可以卸除 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

尚未收到回應的持續探查數目, (請參閱 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 成員所指向的連結清單中 緊接在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 函 式。

如果卸除目標不支援傳送待辦專案大小功能,則必須在查詢連線的 TCP 委派狀態時,將0xFFFFFFFF的值寫入 SendBacklogSizeSendBacklogSize 變數不會用於終止卸載作業中。

BufferedData

緩衝接收數據的指標。 卸除 TCP 連線時,主機堆疊可以將這類數據傳遞至卸除目標。 (如需詳細資訊,請參閱 在卸除作業期間和卸除作業之後處理緩衝接收數據。) 卸除目標可以在上傳 TCP 連線時將這類數據傳遞至主機堆疊。 (如需詳細資訊,請參閱 在終止卸除作業期間處理緩衝接收數據。)

ReceiveBacklogSize

卸除目標會指定這個值,以指出卸除 TCP 連線卸除目標中緩衝的接收數據位元組數目。 主機堆疊可以查詢 TCP 委派狀態,以取得此值。 主機堆疊會使用此值,在聯機上張貼一或多個接收要求,這些要求足以保存所有緩衝的數據。

如果卸除目標不支援接收待辦專案大小功能,它應該將 0xFFFFFFFF 的值寫入 ReceiveBacklogSize

DWnd

備註

當主機堆疊將這些變數卸除至卸除目標時,主機堆疊會提供 TCP 委派變數的初始值。 卸除之後,TCP 委派的變數是由卸除目標所擁有和維護。 只有卸除目標可以變更卸除 TCP 委派變數的值。 卸除目標不會通知主機堆疊卸除 TCP 委派變數值的變更。 不過,主機堆疊可以查詢卸除 TCP 委派變數的值,這會導致 NDIS 呼叫卸除目標的 MiniportQueryOffload 函式。 當主機堆疊終止 TCP 連線狀態物件的卸載時,造成 NDIS 呼叫卸除目標的 MiniportTerminateOffload 函式,卸除目標會將終止 TCP 連線狀態物件中的 TCP 委派變數值傳回主機堆棧。

傳遞至卸除目標時,TCP_OFFLOAD_STATE_DELEGATED結構會與 相關聯 NDIS_MINIPORT_OFFLOAD_BLOCK_LIST 結構,其中包含格式化為 NDIS_OBJECT_HEADER 結構的標頭。 在此情況下,NDIS_OBJECT_HEADER結構的 Revision 成員會指定TCP_OFFLOAD_STATE_DELEGATED結構的修訂編號。

規格需求

需求
標頭 ndischimney.h (包括 Ndischimney.h)

另請參閱

MiniportQueryOffload

MiniportTerminateOffload

NDIS_OBJECT_HEADER

OFFLOAD_STATE_HEADER

TCP_OFFLOAD_STATE_CACHED

TCP_OFFLOAD_STATE_CONST