共用方式為


存取 TCP/IP 卸載NET_BUFFER_LIST資訊

NDIS 6.0 版和更新版本會在NET_BUFFER_LIST結構的NetBufferListInfo成員中,提供 TCP/IP 卸載頻外 (OOB) 資料,以指定NET_BUFFER結構的連結清單。 NetBufferListInfo成員是值陣列,其中包含清單中所有NET_BUFFER結構通用的資訊。

使用下列識別碼搭配 NET_BUFFER_LIST_INFO 宏來設定及取得 NetBufferListInfo 陣列中的 TCP/IP 卸載 OOB 資料:

TcpIpChecksumNetBufferListInfo
指定將總和檢查碼工作從 TCP/IP 通訊協定卸載至迷你埠驅動程式時所使用的總和檢查碼資訊。 當您指定 TcpIpChecksumNetBufferListInfo時,NET_BUFFER_LIST_INFO傳回 NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO 結構, (不是結構的指標) 。 此結構包含聯集,可讓總和檢查碼資訊以單一 PVOID 值或位欄位的形式存取。

IPsecOffloadV1NetBufferListInfo
指定將 IPsec 工作從 TCP/IP 通訊協定卸載至迷你埠驅動程式時所使用的網際網路通訊協定安全性 (IPsec) 卸載資訊。 當您指定 IPsecOffloadV1NetBufferListInfo時,NET_BUFFER_LIST_INFO會傳回 NDIS_IPSEC_OFFLOAD_V1_NET_BUFFER_LIST_INFO 結構。

TcpLargeSendNetBufferListInfo
指定將大型 TCP 封包分割從 TCP/IP 通訊協定卸載至迷你埠驅動程式時所使用的資訊。 當您指定 TcpLargeSendNetBufferListInfo時,NET_BUFFER_LIST_INFO傳回 NDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_LIST_INFO 結構, (不是結構) 的指標。 此結構包含聯集,可讓資訊以單一 PVOID 值或位欄位的形式存取。

Ieee8021QNetBufferListInfo
指定封包的 802.1Q 資訊。 當您指定Ieee8021QNetBufferListInfo時,NET_BUFFER_LIST_INFO會傳回NDIS_NET_BUFFER_LIST_8021Q_INFO結構的Value成員。 此結構可以指定 802.1p 優先順序和虛擬 LAN (VLAN) 識別碼資訊。 802.1p 優先順序資訊可用來在共用媒體 802 網路中建立封包優先順序。

如果迷你埠驅動程式回報NDIS_ENCAPSULATION_IEEE_802_3_P_AND_Q_IN_OOB封裝的支援,則必須將 Ieee8021QNetBufferListInfo 資料插入大型傳送卸載版本 1 (LSOV1) ,而大型傳送卸載版本 2 (LSOV2) 乙太網路封包。

TcpOffloadBytesTransferred
指定 TCP chimney 卸載傳送、接收或中斷連線作業中傳輸的資料位元組數目。

TcpReceiveNoPush
指定 Boolean 值,表示 TCP chimney 卸載接收要求的推送模式。 如果 為 TRUE,則接收要求處於非推送模式。 否則,接收要求會處於推送模式。

針對 LSOV1、LSOV2、總和檢查碼和 IPsec 卸載類型,迷你埠驅動程式會根據 OOB 資料類型及其報告的卸載功能來執行工作卸載。 例如,如果通訊協定驅動程式需要 IPv4 封包的 LSOV1 服務,則通訊協定驅動程式所提供的每個傳送要求都會包含NDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_LIST_INFO OOB 資料中LsoV1Transmit成員的資訊。 請注意,通訊協定驅動程式必須先確認迷你埠驅動程式支援具有指定封裝類型的 IPv4,再提出傳送要求。

NDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_LIST_INFO 結構包含 MSS) (區段大小上限。 TcpHeaderOffset成員會指定 TCP 標頭的位置,讓迷你埠驅動程式不需要剖析 IP 標頭、IP 選項或 IP 擴充功能標頭。

支援 LSOV2 和 LSOV1 的 NDIS 6.0 和更新版本迷你埠驅動程式必須檢查NDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_LIST_INFO的 Type成員,以判斷驅動程式堆疊是否使用 LSOV2 或 LSOV1,而且必須執行適當的卸載。

若為 LSOv1,在迷你埠驅動程式完成大型 TCP 封包的傳送,其已使用 LSO 分割成較小的封包之前,驅動程式會寫入它在 tcpPayload 成員中NDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_LIST_INFO之分段封包中傳送的 TCP 承載位元組數目。

如果迷你埠驅動程式在其功能中指定NDIS_ENCAPSULATION_IEEE_802_3_P_AND_Q旗標,驅動程式可以針對緩衝區資料中包含 VLAN 標頭 的NET_BUFFER_LIST 結構執行工作卸載服務。 如果是收到的資料,此旗標表示迷你埠驅動程式會執行接收總和檢查碼計算,並將 VLAN 標頭放在乙太網路封包中。

如果迷你埠驅動程式在其功能中指定NDIS_ENCAPSULATION_IEEE_802_3_P_AND_Q_IN_OOB旗標,驅動程式可以在 Ieee8021QnetBufferListInfo OOB 資料中包含 VLAN 標頭的NET_BUFFER_LIST結構上執行卸載。 在接收總和檢查碼卸載案例中,迷你埠會將 VLAN 標頭插入 Ieee8021QnetBufferListInfo OOB 資料中。