NDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_LIST_INFO 結構 (ndis/nbllso.h)
NDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_LIST_INFO 結構會指定將大型傳送卸除 (LSO) 工作從 TCP/IP 傳輸卸除至迷你埠配接器時所使用的資訊。 NDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_LIST_INFO 結構是NET_BUFFER_LIST資訊的一部分。
語法
typedef struct _NDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_LIST_INFO {
union {
struct {
ULONG Unused : 30;
ULONG Type : 1;
ULONG Reserved2 : 1;
} Transmit;
struct {
ULONG MSS : 20;
ULONG TcpHeaderOffset : 10;
ULONG Type : 1;
ULONG Reserved2 : 1;
} LsoV1Transmit;
struct {
ULONG TcpPayload : 30;
ULONG Type : 1;
ULONG Reserved2 : 1;
} LsoV1TransmitComplete;
struct {
ULONG MSS : 20;
ULONG TcpHeaderOffset : 10;
ULONG Type : 1;
ULONG IPVersion : 1;
} LsoV2Transmit;
struct {
ULONG Reserved : 30;
ULONG Type : 1;
ULONG Reserved2 : 1;
} LsoV2TransmitComplete;
PVOID Value;
};
} NDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_LIST_INFO, *PNDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_LIST_INFO;
成員
Transmit
NDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_LIST_INFO內的 結構,指定傳輸資訊和包含下列成員:
Transmit.Unused
ULONG 值,指定保留給 NDIS 的未使用空間。
Transmit.Type
迷你埠驅動程序應該執行的卸除類型。 通訊協議驅動程式會將此成員設定為NDIS_TCP_LARGE_SEND_OFFLOAD_V1_TYPE,以指定大型傳送卸除第 1 版 (LSOV1) 作業 NDIS_TCP_LARGE_SEND_OFFLOAD_V2_TYPE,或指定大型傳送卸除第 2 版, (LSOV2) 作業。
Transmit.Reserved2
保留給 NDIS。
LsoV1Transmit
NDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_LIST_INFO內的 結構,指定 LSO 傳輸資訊,且包含下列成員:
LsoV1Transmit.MSS
分割后每個封包 (MSS) 的最大區段大小,以位元組為單位。 TCP/IP 傳輸會先寫入此值,再將大型 TCP 封包傳遞至迷你埠驅動程式以進行分割。 每個傳輸區段中的 TCP 承載大小不得超過此值。
LsoV1Transmit.TcpHeaderOffset
TCP 封包開頭的 TCP 標頭位移,以位元組為單位。 迷你埠驅動程式可以使用 TcpHeaderOffset 來判斷 TCP 標頭的位置,使其不需要剖析 IP 標頭。
LsoV1Transmit.Type
迷你埠驅動程序應該執行的卸除類型。 通訊協定驅動程式會將此成員設定為 NDIS_TCP_LARGE_SEND_OFFLOAD_V1_TYPE,以指定 LSOV1 作業或NDIS_TCP_LARGE_SEND_OFFLOAD_V2_TYPE來指定 LSOV2 作業。
LsoV1Transmit.Reserved2
保留給 NDIS。
LsoV1TransmitComplete
NDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_LIST_INFO內的 結構,指定 LSO 傳輸完整資訊,且包含下列成員:
LsoV1TransmitComplete.TcpPayload
一組封包中的 TCP 承載位元組總數,網路介面卡 (NIC) 透過分割大型封包所建立。 迷你埠驅動程式會先寫入 TCP 承載大小,再完成 LSO 封包的傳送。
LsoV1TransmitComplete.Type
迷你埠驅動程式執行的卸除類型。 迷你埠驅動程式會將此值保留為與過度傳遞驅動程式提交封包進行傳輸時相同。
LsoV1TransmitComplete.Reserved2
保留給 NDIS。
LsoV2Transmit
NDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_LIST_INFO內的 結構,指定 LSOV2 傳輸資訊,且包含下列成員:
LsoV2Transmit.MSS
每個 TCP 區段的 MSS 以位元組為單位。 TCP/IP 傳輸會先寫入此值,再將大型 TCP 封包傳遞至迷你埠驅動程式以進行分割。
LsoV2Transmit.TcpHeaderOffset
TCP 封包開頭的 TCP 標頭位移,以位元組為單位。 迷你埠驅動程式可以使用 TcpHeaderOffset 來判斷 TCP 標頭的位置,使其不需要剖析 IP 標頭。
LsoV2Transmit.Type
迷你埠驅動程序應該執行的卸除類型。 通訊協定驅動程式會將此成員設定為 NDIS_TCP_LARGE_SEND_OFFLOAD_V1_TYPE,以指定 LSOV1 作業或NDIS_TCP_LARGE_SEND_OFFLOAD_V2_TYPE來指定 LSOV2 作業。
LsoV2Transmit.IPVersion
封包的IP版本。 針對 IPv4 封包, IPVersion 會設定為 NDIS_TCP_LARGE_SEND_OFFLOAD_IPv4。 針對 IPv6 封包, IPVersion 會設定為 NDIS_TCP_LARGE_SEND_OFFLOAD_IPv6。
LsoV2TransmitComplete
NDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_LIST_INFO內的 結構,指定 LSOV2 傳輸完整資訊,且包含下列成員:
LsoV2TransmitComplete.Reserved
一般而言,此成員會保留給 NDIS。 不過,當傳送作業完成時,迷你埠驅動程式必須將這個成員設定為零。
LsoV2TransmitComplete.Type
迷你埠驅動程式執行的卸除類型。 迷你埠驅動程式會將此值保留為與過度傳遞驅動程式提交封包進行傳輸時相同。
例如,當傳送作業完成時,迷你埠驅動程式會將此成員設定 為NDIS_TCP_LARGE_SEND_OFFLOAD_V2_TYPE。
LsoV2TransmitComplete.Reserved2
保留給 NDIS。
Value
LSO 資訊的 PVOID 版本。 使用此成員存取原始資訊,而不是特定欄位。
備註
NDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_LIST_INFO 結構會指定 LSOV1 和 LSOV2 作業的資訊。 NDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_LIST_INFO 結構是包含在NET_BUFFER_LIST結構中之資訊的一部分。
若要設定並取得 LSOV1 或 LSOV2 資訊,請使用 TcpLargeSendNetBufferListInfo 索引搭配 NET_BUFFER_LIST_INFO 宏。 NET_BUFFER_LIST_INFO 傳回 ULONG 值 (不是 ULONG 值指標) 。
TCP/IP 傳輸會先更新NDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_LIST_INFO結構的 MSS 和 TcpHeaderOffset 成員,再將大型封包傳送至迷你埠驅動程式。
針對 LSOV1,迷你埠驅動程式會在 TcpPayload 成員中寫入 TCP 承載大小,再完成分段封包的傳送作業。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | NDIS 6.0 和更新版本支援。 |
標頭 | ndis/nbllso.h (include ndis.h) |
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應