共用方式為


TCP_OFFLOAD_STATE_CACHED結構(ndischimney.h)

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

TCP_OFFLOAD_STATE_CACHED 結構包含 TCP 連線狀態物件的快取變數。

語法

typedef struct _TCP_OFFLOAD_STATE_CACHED {
  OFFLOAD_STATE_HEADER Header;
  USHORT               Flags;
  ULONG                InitialRcvWnd;
  ULONG                RcvIndicationSize;
  UCHAR                KaProbeCount;
  ULONG                KaTimeout;
  ULONG                KaInterval;
  ULONG                MaxRT;
  ULONG                FlowLabel : 20;
  UCHAR                TtlOrHopLimit;
  UCHAR                TosOrTrafficClass;
  UCHAR                UserPriority : 3;
} TCP_OFFLOAD_STATE_CACHED, *PTCP_OFFLOAD_STATE_CACHED;

成員

Header

OFFLOAD_STATE_HEADER 結構。 NDIS 會將 HeaderLength 成員設定為TCP_OFFLOAD_STATE_CACHED結構的大小,以位元組為單位。 保留 標頭RecognizedOptions 成員。

Flags

可設定為零或下列任何旗標的位掩碼,結合位 OR:

TCP_FLAG_KEEP_ALIVE_ENABLED

主機堆疊會設定此旗標,以在聯機上啟用 keepalive 選項。 主機堆疊會清除此旗標,以停用連線上的 keepalive 選項。 如需 keepalive 選項的詳細資訊,請參閱 RFC 1122。

TCP_FLAG_NAGLING_ENABLED

主機堆疊會設定此旗標,以在聯機上啟用 Nagle 演算法。 主機堆疊會清除此旗標,以停用連線上的 Nagle 演算法。 如需 Nagle 演算法的詳細資訊,請參閱 RFC 896。

TCP_FLAG_KEEP_ALIVE_RESTART

主機堆疊會設定此旗標,讓卸除目標將其保留定時器重設為零。

TCP_FLAG_MAX_RT_RESTART

主機堆疊會將此旗標設定為讓卸除目標重設 TCP 委派狀態的 TotalRT 變數,使連線設為零。

TCP_FLAG_UPDATE_RCV_WND

主機堆疊會設定此旗標,表示預設接收視窗大小已變更 (TCP_OFFLOAD_STATE_CACHED 結構中的 InitialRcvWnd)。 如果 InitialRcvWnd 的值與卸除目標目前的接收視窗大小不同(TCP_OFFLOAD_STATE_DELEGATED 結構中的 RcvWnd),卸除目標必須將新的接收視窗大小公告給對等。

InitialRcvWnd

預設接收視窗(從套接字選項SO_RCVBUF)。

RcvIndicationSize

當非NULL時,卸除目標應該在單一呼叫 中提供的最佳數據位元組數目 NdisTcpOffloadReceiveHandler 函式。 這個數位通常介於數十到數百個字節之間,是建議,而不是需求。 卸除目標可以指出 RcvIndicationSize 數據位元組。 不過,為了達到最佳效能,卸除目標應該會指出
RcvIndicationSize 數據位元組。 如需詳細資訊,請參閱 NdisTcpOffloadReceiveHandler

NULL時,RcvIndicationSize 未指定。 在此情況下,卸除目標應該忽略 RcvIndicationSize,並在呼叫 NdisTcpOffloadReceiveHandler 函式時指出盡可能多的數據。

KaProbeCount

卸除目標應該傳送的保留探查數目,以判斷 TCP 連線是否完好無損(請參閱 RFC 1122)。

KaTimeout

此成員會在傳送保留探查之前,以時鐘刻度指定閑置的逾時間隔(請參閱 RFC 1122)。

KaInterval

此成員會以時鐘刻度指定逾時,如果未收到對保留式探查的回應,則會在逾時之後重新傳輸保留框架(請參閱 RFC 1122)。

MaxRT

此成員會以時鐘刻度指定卸除目標應該花費重新傳輸區段的時間上限。 如果 MaxRT 的值不是零,MaxRT 會覆寫 TcpMaximumRetransmissions 中的 NDIS_TASK_TCP_CONNECTION_OFFLOAD 結構。 的預設值為 MaxRT 為零,這表示 TcpMaximumRetransmissions 設定卸除目標應該重新傳輸 TCP 連線上區段的最大次數。 如果 MaxRT 的值是FFFFFFFF (或 -1),則重新傳輸數目上限沒有限制。 MaxRT 為非零時,卸除目標應重設連線之 TCP 委派狀態中的 TotalRT 變數。 TotalRT 指出卸除目標花費重新傳輸目前 TCP 區段的總時間,以時鐘刻度為單位。

FlowLabel

此成員會藉由介入路由器來標記主機標記封包以進行特殊處理,例如非預設 QoS 或「即時」服務(請參閱 RFC 2460)。 此變數是透過套接字選項設定,而且在 TCP 連線的存留期間可能會有所不同。 只有在 TCP 連線透過 IPv6 時,這個變數才有意義。

TtlOrHopLimit

如果 TCP 連線是透過 IPv4,則此成員會指定存留時間(請參閱 RFC 791)。 此變數是透過套接字選項設定,而且在 TCP 連線的存留期間可能會有所不同。

如果 TCP 連線是透過 IPv6,則此成員會指定封包可通過的路由器數目(請參閱 RFC 2460)。 此變數是透過套接字選項設定,而且在 TCP 連線的存留期間可能會有所不同。

TosOrTrafficClass

如果 TCP 連線是透過 IPv4,則此成員會指定路由封包的服務類型(請參閱 RFC 2474)。 此變數是透過套接字選項設定,而且在 TCP 連線的存留期間可能會有所不同。

如果 TCP 連線超過 IPv6,則此成員會根據流量類型設定封包的優先順序,指出傳送者是否願意捨棄封包(請參閱 RFC 2460)。 此變數是透過套接字選項設定,而且在 TCP 連線的存留期間可能會有所不同。

UserPriority

3 位優先順序值。 如果卸除目標支援 802.1p 封包資訊,則必須將此優先順序值插入 標記標頭中, 在卸除 TCP 連線上傳輸的所有封包。 如果卸除目標不支援 802.1p 封包資訊,它應該忽略 UserPriority 。 如需支援 802.1p 封包資訊的詳細資訊,請參閱在卸除的 TCP 連線 802.1Q 和 802.1p 處理。

言論

快取變數是由主機堆疊所擁有和維護。 除非主機堆疊要求卸除目標,否則卸除目標不得變更快取變數的值。 如果快取變數的值變更,主機堆疊會要求更新變數,這會導致 NDIS 呼叫卸除目標的 MiniportUpdateOffload 函式。 當主機堆疊終止卸除一或多個狀態物件時,導致 NDIS 呼叫卸除目標的 MiniportTerminateOffload 函式中,卸除目標不會將卸除常數變數的值傳回主機堆棧。

請注意,如果已卸除的 TCP 連線TCP_FLAG_MAX_RT_RESTART旗標已設定,卸除目標必須:

  • 當主機堆棧更新該連線快取的 KaProbeCount 變數時,重設該連線的委派 KeepaliveProbeCount 變數。
  • 當主機堆棧更新該連線快取的 KaTimeout 和/或 KaInterval 變數時,重設該連線的委派 KeepaliveTimeoutDelta 變數。
傳遞至卸除目標時,TCP_OFFLOAD_STATE_CACHED結構會與 相關聯 NDIS_MINIPORT_OFFLOAD_BLOCK_LIST 結構,其中包含格式化為 NDIS_OBJECT_HEADER 結構的標頭。 在此案例中,NDIS_OBJECT_HEADER結構的 Revision 成員會指定TCP_OFFLOAD_STATE_CACHED結構的修訂編號。

要求

要求 價值
標頭 ndischimney.h (包括 Ndischimney.h)

另請參閱

MiniportTerminateOffload

MiniportUpdateOffload

NDIS_OBJECT_HEADER

OFFLOAD_STATE_HEADER

TCP_OFFLOAD_STATE_CONST

TCP_OFFLOAD_STATE_DELEGATED