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中的資訊會格式化為下列其中一個結構:
- NDIS_TASK_TCP_IP_CHECKSUM
指定總和檢查碼卸載功能。 - NDIS_TASK_IPSEC
指定 IPsec (卸載功能的網際網路通訊協定安全性) 。 - NDIS_TASK_TCP_LARGE_SEND
指定大型 TCP 封包分割功能。 - NDIS_TASK_TCP_CONNECTION_OFFLOAD
指定 TCP chimney 卸載功能。 如需NDIS_TASK_TCP_CONNECTION_OFFLOAD的詳細資訊,請參閱 TCP Chimney 卸載。
注意
如果中繼驅動程式修改轉送至基礎迷你埠驅動程式的封包內容,讓 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)