共用方式為


OID_TCP_TASK_OFFLOAD

主機堆疊會查詢 OID_TCP_TASK_OFFLOAD OID,以取得迷你埠驅動程式 NIC 或卸載目標的 TCP 卸載功能。 判斷 NIC 或卸載目標支援的卸載功能之後,主機堆疊會將此 OID 設定為啟用一或多個報告功能。 主機堆疊也可以藉由設定OID_TCP_TASK_OFFLOAD來停用所有 NIC 或卸載目標的 TCP 卸載功能。 一次只能有一個通訊協定來啟用特定 NIC 的 TCP 卸載功能。

查詢卸載功能

當主機堆疊查詢OID_TCP_TASK_OFFLOAD時,它會在 InformationBuffer 中提供 NDIS_TASK_OFFLOAD_HEADER 結構。 此結構會指定下列專案:

  • 主機堆疊支援的卸載版本。
  • 主機堆疊所處理之傳送和接收封包的封裝格式。
  • 這類封包中的封裝標頭大小。

利用這項資訊,迷你埠驅動程式或其 NIC 可以在傳輸封包中找到第一個 IP 標頭的開頭,這是執行卸載工作的必要條件。 卸載目標必須知道封裝格式,才能處理接收封包。 為了回應OID_TCP_TASK_OFFLOAD的查詢,迷你埠驅動程式或卸載目標會在 InformationBuffer中傳回NDIS_TASK_OFFLOAD_HEADER結構,緊接著一或多個 NDIS_TASK_OFFLOAD 結構。 每個NDIS_TASK_OFFLOAD結構描述迷你埠驅動程式的 NIC 或卸載目標所支援的卸載功能。 如果迷你埠驅動程式的 NIC 或卸載目標支援多個特定卸載功能版本,它應該針對每個版本傳回一個NDIS_TASK_OFFLOAD結構。

每個NDIS_TASK_OFFLOAD結構 都有 Task 成員 ,指定結構套用的特定卸載功能。 每個NDIS_TASK_OFFLOAD結構也有 TaskBuffer ,其中包含指定卸載功能的相關資訊。 TaskBuffer中的資訊會格式化為下列其中一個結構:

注意

如果中繼驅動程式修改轉送至基礎迷你埠驅動程式的封包內容,讓 TCP 卸載函式無法在封包上執行,中繼驅動程式應該 OID_TCP_TASK_OFFLOAD回應狀態為 NDIS_STATUS_NOT_SUPPORTED 的查詢,而不是將 OID 要求傳遞至基礎迷你埠驅動程式或卸載目標。

啟用卸載功能

查詢 NIC 或卸載目標的卸載功能之後,主機堆疊會藉由設定OID_TCP_TASK_OFFLOAD來啟用一或多個這些功能。 設定OID_TCP_TASK_OFFLOAD時,主機堆疊會在 InformationBuffer中提供NDIS_TASK_OFFLOAD_HEADER結構,後面緊接著主機堆疊所啟用之每個卸載功能的NDIS_TASK_OFFLOAD結構。

每個NDIS_TASK_OFFLOAD結構中的 [工作 ] 表示主機堆疊正在啟用的卸載功能。 主機堆疊也會藉由在每個NDIS_TASK_OFFLOAD 結構的 TaskBuffer 中設定結構的成員,來啟用特定卸載功能的特定層面。

變更卸載功能

若要變更為 NIC 或卸載目標啟用的卸載功能,主機堆疊會設定OID_TCP_TASK_OFFLOAD。 迷你埠驅動程式或卸載目標只能啟用最近一組OID_TCP_TASK_OFFLOAD所指定的卸載功能。 迷你埠驅動程式或卸載目標必須停用所有其他卸載功能。 請注意,在停用特定 TCP 閒置卸載功能之前,主機堆疊會終止使用該功能的任何卸載 TCP 連線卸載。

卸載目標可以使用暫停或繼續卸載指示來變更其報告的 TCP 卸載功能:

  • 卸載目標會呼叫NdisMIndicateStatusEx函式,並將NDIS_STATUS_INDICATION-StatusCode> 成員設定為 NDIS_STATUS_OFFLOAD_PAUSE,以發出暫停指示。
  • 卸載目標會呼叫NdisMIndicateStatusEx函式,並將NDIS_STATUS_INDICATION-StatusCode> 成員設定為 NDIS_STATUS_OFFLOAD_RESUME,以繼續指示。

卸載目標要求主機堆疊繼續卸載狀態物件之後,主機堆疊會重新查詢OID_TCP_TASK_OFFLOAD,以取得卸載目標的 TCP 卸載修訂功能。 如需詳細資訊,請參閱 NDIS_STATUS_OFFLOAD_RESUME

停用卸載功能

若要停用 NIC 或卸載目標支援的所有卸載功能,主機堆疊會設定OID_TCP_TASK_OFFLOAD。 在 InformationBuffer中,主機堆疊會提供NDIS_TASK_OFFLOAD_HEADER結構,並將這個結構的 OffsetFirstTask 成員設定為零。

規格需求

版本:Windows Vista 和更新版本 標頭:Ntddndis.h (包含 Ndis.h)