共用方式為


NdisMTerminateOffloadComplete 函式 (ndischimney.h)

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

卸除目標會呼叫 NdisMTerminateOffloadComplete 函式,以完成先前呼叫 所起始的終止卸載作業卸除目標的 MiniportTerminateOffload 函式。

語法

void NdisMTerminateOffloadComplete(
  [in] IN NDIS_HANDLE                       NdisMiniportHandle,
  [in] IN PNDIS_MINIPORT_OFFLOAD_BLOCK_LIST OffloadBlockList
);

參數

[in] NdisMiniportHandle

卸除目標在先前呼叫中取得的句柄 NdisMRegisterMiniportDriver

[in] OffloadBlockList

的指標 NDIS_MINIPORT_OFFLOAD_BLOCK_LIST 結構。 卸除目標取得此指標做為其輸入參數 MiniportTerminateOffload 函式。

傳回值

備註

呼叫 NdisMTerminateOffloadComplete 函式之前,卸除目標必須將下列任一NDIS_STATUS值寫入狀態樹狀結構中每個NDIS_MINIPORT_OFFLOAD_BLOCK_LIST結構的 Status 成員:

  • NDIS_STATUS_SUCCESS

    卸除目標已成功終止NDIS_MINIPORT_OFFLOAD_BLOCK_LIST結構所參考的狀態物件卸除。 如果NDIS_MINIPORT_OFFLOAD_BLOCK_LIST結構後面接著委派的狀態結構 (XXX_OFFLOAD_STATE_DELEGATED) ,卸除目標已成功將該狀態物件的委派變數值寫入委派狀態結構。

  • NDIS_STATUS_FAILURE

    終止作業未成功。 這類失敗是由導致中斷狀態物件的嚴重失敗所造成。 在此情況下,卸除目標硬體可能不會回應。 主機堆疊可能必須中止連線。

在呼叫 NdisMTerminateOffloadComplete 函式之前,卸除目標也必須: 如果在終止的 TCP 連線上有未完成的傳送數據,卸除目標套件會在 net 緩衝區中這類數據,並將封裝的數據傳遞至 連結清單中的主機堆疊NET_BUFFER_LIST 結構。 在此情況下,卸除目標會針對該連線之NDIS_MINIPORT_OFFLOAD_BLOCK_LIST結構的 NetBufferListChain 成員指定非 NULL 值。 (NDIS_MINIPORT_OFFLOAD_BLOCK_LIST 結構位於 OffloadBlockList 指標所指向的連結清單中。) NetBufferListChain 成員會指向與傳送數據相關聯 之NET_BUFFER_LIST 結構的連結清單。

將未處理傳送的數據傳遞至主機堆疊時,卸除目標也必須針對正在終止的連接指定下列委派 TCP 變數的非 NULL 值:

  • SndUna
  • SndNxt
  • SndMax
如需傳遞未處理傳送數據的詳細資訊,請參閱 在卸除作業期間和之後處理未處理的傳送數據

如果 TCP 連線上沒有正在終止的未處理傳送數據,卸除目標必須指定 NetBufferListChain 成員的 NULL 值。

正在上傳的 TCP 連線上可能會有未完成的接收數據。 這是卸除目標已從網路接收、處理及認可的數據。 如需處理這類數據的詳細資訊,請參閱 在終止卸除作業期間處理緩衝接收數據

卸除目標會釋放與終止狀態對象相關聯的所有資源,例如記憶體。

規格需求

需求
目標平台 Universal
標頭 ndischimney.h (包含 Ndischimney.h)
IRQL 任何層級

另請參閱

MiniportTerminateOffload

NDIS_MINIPORT_OFFLOAD_BLOCK_LIST

NdisMRegisterMiniportDriver

TCP_OFFLOAD_STATE_DELEGATED