NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST結構 (ndischimney.h)
[TCP chimney 卸除功能已被取代,不應使用。
NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST結構。
語法
typedef struct _NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST {
IN NDIS_OBJECT_HEADER Header;
IN _NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST *NextBlock;
#if ...
struct _NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST;
IN _NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST *DependentBlockList;
#else
struct _NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST;
#endif
OUT NDIS_STATUS Status;
IN PVOID NdisReserved[3];
IN OUT PNDIS_OFFLOAD_HANDLE OffloadHandle;
IN PVOID ProtocolReserved[2];
IN PVOID MiniportReserved[2];
IN PVOID ImReserved[2];
IN PVOID Scratch[2];
IN PVOID SourceHandle;
IN NDIS_PORT_NUMBER PortNumber;
IN OUT PNET_BUFFER_LIST NetBufferListChain;
} NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST, *PNDIS_PROTOCOL_OFFLOAD_BLOCK_LIST;
成員
Header
NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST 結構的標頭。 標頭的格式為 NDIS_OBJECT_HEADER 結構。 NDIS_OBJECT_HEADER 結構包含NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST結構的修訂編號、緊接在記憶體中NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST結構的卸除狀態類型,以及NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST結構的大小,包括標頭,以位元組為單位。
NDIS_OBJECT_HEADER 結構的 Type 成員表示卸除狀態的類型,並隱含地指出特定卸除狀態結構 (或緊接在記憶體中NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST結構) 。
支援下列OFFLOAD_STATE_TYPE值:
NeighborOffloadConstState
指定常數芳鄰狀態。 此狀態的格式為 NEIGHBOR_OFFLOAD_STATE_CONST 結構。
NeighborOffloadCachedState
指定快取的芳鄰狀態。 此狀態的格式為 NEIGHBOR_OFFLOAD_STATE_CACHED 結構。
NeighborOffloadDelegatedState
指定委派的芳鄰狀態。 此狀態的格式為 NEIGHBOR_OFFLOAD_STATE_DELEGATED 結構。
NeighborOffloadState
指定所有芳鄰狀態,包括常數、快取和委派的芳鄰狀態。 此狀態的格式為NEIGHBOR_OFFLOAD_STATE_CONST結構,後面接著NEIGHBOR_OFFLOAD_STATE_CACHED結構,後面接著NEIGHBOR_OFFLOAD_STATE_DELEGATED結構。
Ip4OffloadConstState
指定IPv4) (常數路徑狀態。 此狀態的格式為 PATH_OFFLOAD_STATE_CONST 結構。
Ip4OffloadCachedState
指定IPv4 () 的快取路徑狀態。 此狀態的格式為 PATH_OFFLOAD_STATE_CACHED 結構。
Ip4OffloadDelegatedState
指定IPv4) (委派的路徑狀態。 此狀態的格式為 PATH_OFFLOAD_STATE_DELEGATED 結構。 目前沒有委派的路徑狀態。 PATH_OFFLOAD_STATE_DELEGATED 結構不包含任何變數。
Ip4OffloadState
指定IPv4) (的所有路徑狀態,包括常數、快取和委派的路徑狀態。 此狀態的格式為PATH_OFFLOAD_STATE_CONST結構,後面接著PATH_OFFLOAD_STATE_CACHED結構,後面接著PATH_OFFLOAD_STATE_DELEGATED結構。
Ip6OffloadConstState
指定IPv6) (常數路徑狀態。 此狀態的格式為PATH_OFFLOAD_STATE_CONST結構。
Ip6OffloadCachedState
指定IPv6) (快取的路徑狀態。 此狀態的格式為PATH_OFFLOAD_STATE_CACHED結構。
Ip6OffloadDelegatedState
指定 IPv6) (委派的路徑狀態。 此狀態的格式為 PATH_OFFLOAD_STATE_DELEGATED 結構。 目前沒有委派的路徑狀態。 PATH_OFFLOAD_STATE_DELEGATED 結構不包含任何變數。
Ip6OffloadState
指定IPv6) 的所有路徑狀態 (,包括常數、快取和委派的路徑狀態。 此狀態的格式為PATH_OFFLOAD_STATE_CONST結構,後面接著PATH_OFFLOAD_STATE_CACHED結構,後面接著PATH_OFFLOAD_STATE_DELEGATED結構。
TcpOffloadConstState
指定常數 TCP 狀態。 此狀態的格式為 TCP_OFFLOAD_STATE_CONST 結構。
TcpOffloadCachedState
指定快取的 TCP 狀態。 此狀態的格式為 TCP_OFFLOAD_STATE_CACHED 結構。
TcpOffloadDelegatedState
指定委派的 TCP 狀態。 此狀態的格式為 TCP_OFFLOAD_STATE_DELEGATED 結構。
TcpOffloadResourceState
保留的。 目前不會使用這個OFFLOAD_STATE_TYPE值以及TCP_OFFLOAD_RESOURCE_STATE結構。
TcpOffloadState
指定所有 TCP 狀態,包括常數、快取和委派的 TCP 狀態。 此狀態的格式為TCP_OFFLOAD_STATE_CONST結構,後面接著TCP_OFFLOAD_STATE_CACHED結構,後面接著TCP_OFFLOAD_STATE_DELEGATED結構。
FilterReservedOffloadState
保留給篩選驅動程式。
NextBlock
卸除狀態層上下一個NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST結構的指標, (芳鄰、路徑或 TCP) ,由標頭成員的 Type 成員表示。 NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST透過 NextBlock 指標鏈接的結構一律位於卸除狀態的相同層。 NULL 的 NextBlock 值表示這個層級沒有額外的下一個NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST結構。
_NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST
DependentBlockList
位於卸除狀態相依層之NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST結構的指標, (卸除狀態樹狀結構中較高層) 。
針對 TCP chimney 卸除:
鄰近層NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST結構的 DependentBlockList 成員只能指向路徑層的NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST結構。 路徑層上NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST結構的 DependentBlockList 成員只能指向 TCP 層的NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST結構。 TCP 層NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST結構的 DependentBlockList 成員一律為 NULL。
NULL 的 DependentBlockList 值表示沒有相依NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST結構。
Status
起始卸除、查詢卸除、更新卸除、失效卸除,或終止卸除目標在與 NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST 結構相關聯或參考的狀態上執行的卸載作業完成狀態。 根據作業而定,NDIS 會將下列其中一個NDIS_STATUS值寫入 Status 成員:
NDIS_STATUS_SUCCESS
起始卸除:基礎卸除目標已成功卸除與NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST結構相關聯的狀態,以及與所有立即相依PROTOCOL_MINIPORT_OFFLOAD_BLOCK_LIST結構相關聯的狀態。
查詢、更新、失效或終止卸除:卸除目標已成功對與 NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST 結構相關聯或參考的狀態執行作業。
NDIS_STATUS_OFFLOAD_PARTIAL_SUCCESS
起始卸除:基礎卸除目標已成功卸除與NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST結構相關聯的狀態,但無法卸除與一或多個立即相依NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST結構相關聯的狀態。
查詢、更新、失效或終止卸除:不允許的狀態值。
NDIS_STATUS_FAILURE
起始卸除:基礎卸除目標無法卸除與NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST結構相關聯的狀態。 無法分類失敗的原因。
查詢、更新、失效或終止卸除:卸除目標無法對與 NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST 結構相關聯或參考的狀態執行作業。
NDIS_STATUS_RESOURCES
起始卸除:卸除目標無法卸除與NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST結構相關聯的狀態,因為卸除目標無法配置足夠的主機記憶體。
查詢、更新、失效或終止卸除:不允許的狀態值。
NDIS_STATUS_OFFLOAD_TCP_ENTRIES
起始卸除:卸除目標無法卸除與NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST結構相關聯的狀態,因為卸除目標無法配置 TCP 連線狀態物件。
查詢、更新、失效或終止卸除:不允許的狀態值。
NDIS_STATUS_OFFLOAD_PATH_ENTRIES
起始卸除:卸除目標無法卸除與NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST結構相關聯的狀態,因為卸除目標無法配置路徑狀態物件。
查詢、更新、失效或終止卸除:不允許的狀態值。
NDIS_STATUS_OFFLOAD_NEIGHBOR_ENTRIES
起始卸除:卸除目標無法卸除與NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST結構相關聯的狀態,因為卸除目標無法配置鄰近狀態物件。
查詢、更新、失效或終止卸除:不允許的狀態值。
NDIS_STATUS_OFFLOAD_HW_ADDRESS_ENTRIES
起始卸除:卸除目標無法卸除與NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST結構相關聯的狀態,因為主機堆疊在 中指定了非 NULLDlSourceAddress 成員 NEIGHBOR_OFFLOAD_STATE_CONST 結構,卸除目標不支援可設定的來源 MAC 位址,或無法接受其他來源 MAC 位址。
查詢、更新、失效或終止卸除:不允許的狀態值。
NDIS_STATUS_OFFLOAD_IP_ADDRESS_ENTRIES
起始卸除:卸除目標無法卸除與NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST結構相關聯的狀態,因為卸除目標無法為 SourceAddress 指標所參考的來源IP位址配置數據結構 PATH_OFFLOAD_STATE_CONST 結構。
查詢、更新、失效或終止卸除:不允許的狀態值。
NDIS_STATUS_OFFLOAD_TCP_XMIT_BUFFER
起始卸除:卸除目標無法卸除與NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST結構相關聯的狀態,因為卸除目標無法配置足夠的 TCP 傳輸緩衝區。
查詢、更新、失效或終止卸除:不允許的狀態值。
NDIS_STATUS_OFFLOAD_TCP_RCV_BUFFER
起始卸除:卸除目標無法卸除與NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST結構相關聯的狀態,因為卸除目標無法配置足夠的 TCP 接收緩衝區。
查詢、更新、失效或終止卸除:不允許的狀態值。
NDIS_STATUS_OFFLOAD_TCP_RCV_WINDOW
起始卸除:卸除目標無法卸除與NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST結構相關聯的狀態,因為 中指定的 InitialRcvWnd 成員 TCP_OFFLOAD_STATE_CACHED 結構大於卸除目標可以支援。
查詢、更新、失效或終止卸除:不允許的狀態值。
NDIS_STATUS_OFFLOAD_VLAN_ENTRIES
起始卸除:卸除目標已用盡資源來追蹤其他 VLAN 標識碼。
查詢、更新、失效或終止卸除:不允許的狀態值。
NDIS_STATUS_OFFLOAD_VLAN_MISMATCH
起始卸除:鄰近 VlanId 為非零,且不符合其中一個介面 VLAN 標識符。
查詢、更新、失效或終止卸除:不允許的狀態值。
NDIS_STATUS_OFFLOAD_PATH_MTU
起始卸除:TCP 連線的路徑 MTU 大於卸除目標支持的路徑。
查詢、更新、失效或終止卸除:不允許的狀態值。
NdisReserved[3]
保留供 NDIS 使用。
OffloadHandle
NDIS_OFFLOAD_HANDLE 結構的指標。 NDIS_OFFLOAD_HANDLE 結構代表卸除狀態對象的通訊協定或中繼驅動程序內容。
ProtocolReserved[2]
保留供通訊協定驅動程式使用,此區域可用於自己的用途。
MiniportReserved[2]
保留供卸除目標或中繼驅動程式的迷你埠部分使用。
ImReserved[2]
保留供中繼驅動程式使用,此區域可用於自己的用途。
Scratch[2]
通訊協定驅動程式或中繼驅動程式可以使用這個區域進行內部追蹤。 只有在驅動程式擁有擁有權時,此區域中的資訊才有效 NDIS_PROTOCOL_OFFLOAD_BLOCK_LIS T.
SourceHandle
此成員對通訊協定或中繼驅動程式並不重要。 通訊協定或中繼驅動程式不得修改此成員。
傳播狀態操作作業完成時,中繼驅動程式會複製
儲存在 IM 呼叫專案中的 SourceHandle 成員的 SourceHandle NDIS_MINIPORT_OFFLOAD_BLOCK_LIST 傳遞至 NdisMXxxComplete 函式的結構。
PortNumber
識別迷你埠配接器埠的埠號碼。 若要指派迷你埠配接器埠號碼,請呼叫 NdisMAllocatePort 函式。 零值會識別迷你埠配接器的預設埠。 如果迷你埠驅動程式尚未為指定的配接器配置埠,請使用預設埠。
NetBufferListChain
當通訊協定或中繼驅動程式指定 NULL 值時, NetBufferListChain 並不重要,而且基礎驅動程式或卸除目標可以忽略。
當通訊協定或中繼驅動程式指定非 NULL 值時, NetBufferListChain 會指向可以是獨立結構或這類結構連結清單中的第一個結構 NET_BUFFER_LIST 結構。 鏈接清單中的每個NET_BUFFER_LIST結構都會描述一個 NET_BUFFER 結構。 NET_BUFFER 結構會對應至記憶體描述項鍊結, (MDL) 。 NET_BUFFER_LIST和相關聯的結構會鎖定,使其保留在物理記憶體中。 不過,它們不會對應到系統記憶體中。
與NET_BUFFER結構相關聯的 MDL 包含作為狀態操作作業一部分或這類作業完成時所傳達的數據。 目前,連結的清單只能包含一種數據類型:未處理的傳送數據。 如需傳送數據的詳細資訊,請參閱 在卸除作業期間和之後處理未完成的傳送數據。
卸除目標或中繼驅動程式可以在終止 TCP 連線的卸載時,將未完成的傳送數據傳遞至過度處理驅動程式或主機堆疊。 在此情況下,卸除目標會在呼叫 時指定 NetBufferListChain 成員的非 NULL 值 NdisMTerminateOffloadComplete 函式 。 如果卸除目標未針對即將終止的 TCP 連線傳遞傳送數據,它會指定 NetBufferListChain 成員的 NULL 值。
備註
中繼驅動程式會從 建立NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST結構在傳播狀態操作作業時,NDIS_MINIPORT_OFFLOAD_BLOCK_LIST 結構。 當 傳播這類作業完成時,中繼驅動程式會使用NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST結構來建構NDIS_MINIPORT_OFFLOAD_BLOCK_LIST結構。
NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST 結構可以緊接著記憶體中的 卸除狀態結構 ,其中包含要 (的狀態,或已) 卸除、查詢、更新、失效或終止的狀態。 NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST 結構的 Type 成員 會指定卸 除狀態的類型,並透過隱含方式指定特定卸除狀態結構 (或記憶體中) ) NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST 結構。
規格需求
需求 | 值 |
---|---|
標頭 | ndischimney.h (包括 Ndischimney.h) |