NDIS_MINIPORT_OFFLOAD_BLOCK_LIST結構(ndischimney.h)
[TCP 煙囪卸除功能已被取代,不應使用。]
NDIS_MINIPORT_OFFLOAD_BLOCK_LIST結構是 TCP 煙囪卸除狀態樹狀結構的基本建置組塊。 卸除狀態樹狀結構可以包含一或多個NDIS_MINIPORT_OFFLOAD_BLOCK_LIST結構。
語法
typedef struct _NDIS_MINIPORT_OFFLOAD_BLOCK_LIST {
IN NDIS_OBJECT_HEADER Header;
IN _NDIS_MINIPORT_OFFLOAD_BLOCK_LIST *NextBlock;
#if ...
struct _NDIS_MINIPORT_OFFLOAD_BLOCK_LIST;
IN _NDIS_MINIPORT_OFFLOAD_BLOCK_LIST *DependentBlockList;
#else
struct _NDIS_MINIPORT_OFFLOAD_BLOCK_LIST;
#endif
OUT NDIS_STATUS Status;
IN PVOID NdisReserved[2];
IN OUT PVOID *MiniportOffloadContext;
IN NDIS_HANDLE NdisOffloadHandle;
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_MINIPORT_OFFLOAD_BLOCK_LIST, *PNDIS_MINIPORT_OFFLOAD_BLOCK_LIST;
成員
Header
NDIS_MINIPORT_OFFLOAD_BLOCK_LIST 結構的標頭。 標頭會格式化為 NDIS_OBJECT_HEADER 結構。 NDIS_OBJECT_HEADER 結構包含NDIS_MINIPORT_OFFLOAD_BLOCK_LIST結構的修訂編號、緊接記憶體中NDIS_MINIPORT_OFFLOAD_BLOCK_LIST結構的卸除狀態類型,以及NDIS_MINIPORT_OFFLOAD_BLOCK_LIST結構的大小,包括標頭,以位元組為單位。
Type NDIS_OBJECT_HEADER 結構的成員會指出卸除狀態的類型,並隱含地指出緊接記憶體中NDIS_MINIPORT_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_MINIPORT_OFFLOAD_BLOCK_LIST結構的指標,位於卸除狀態層的下一個 Type 成員所表示 標頭 成員。 透過 NextBlock 連結的NDIS_MINIPORT_OFFLOAD_BLOCK_LIST結構 指標一律位於卸除狀態的同一層。 NextBlock 值 NULL 表示此層級沒有額外的下一個NDIS_MINIPORT_OFFLOAD_BLOCK_LIST結構。
_NDIS_MINIPORT_OFFLOAD_BLOCK_LIST
DependentBlockList
位於卸除狀態相依層之NDIS_MINIPORT_OFFLOAD_BLOCK_LIST結構的指標(卸除狀態樹狀結構中的較高層)。 針對 TCP 煙囪卸除:
- DependentBlockList 鄰近層NDIS_MINIPORT_OFFLOAD_BLOCK_LIST結構的成員只能指向路徑層的NDIS_MINIPORT_OFFLOAD_BLOCK_LIST結構。
- DependentBlockList 路徑層NDIS_MINIPORT_OFFLOAD_BLOCK_LIST結構的成員只能指向 TCP 層的NDIS_MINIPORT_OFFLOAD_BLOCK_LIST結構。
- TCP 層NDIS_MINIPORT_OFFLOAD_BLOCK_LIST結構 成員 DependentBlockList 一律 NULL。
Status
起始卸除、查詢卸除、更新卸除、使卸除失效或終止卸除目標的完成狀態,或由 NDIS_MINIPORT_OFFLOAD_BLOCK_LIST 結構參考的卸除目標。 視作業而定,卸除目標會將下列其中一個NDIS_STATUS值寫入 狀態 成員:
NDIS_STATUS_SUCCESS
起始卸除:卸除目標已成功卸除與NDIS_MINIPORT_OFFLOAD_BLOCK_LIST結構相關聯的狀態,以及與所有立即相依NDIS_MINIPORT_OFFLOAD_BLOCK_LIST結構相關聯的狀態。
查詢、更新、失效或終止卸除:卸除目標已成功在與 NDIS_MINIPORT_OFFLOAD_BLOCK_LIST 結構相關聯或參考的狀態上執行作業。
NDIS_STATUS_OFFLOAD_PARTIAL_SUCCESS
起始卸除:卸除目標已成功卸除與NDIS_MINIPORT_OFFLOAD_BLOCK_LIST結構相關聯的狀態,但無法卸除與一或多個立即相依NDIS_MINIPORT_OFFLOAD_BLOCK_LIST結構相關聯的狀態。
查詢、更新、失效或終止卸除:不允許的狀態值。
NDIS_STATUS_FAILURE
起始卸除:卸除目標無法卸除與NDIS_MINIPORT_OFFLOAD_BLOCK_LIST結構相關聯的狀態。 無法分類失敗的原因。
查詢、更新、失效或終止卸除:卸除目標無法在與 NDIS_MINIPORT_OFFLOAD_BLOCK_LIST 結構相關聯或參考的狀態上執行作業。
NDIS_STATUS_RESOURCES
起始卸除:卸除目標無法卸除與NDIS_MINIPORT_OFFLOAD_BLOCK_LIST結構相關聯的狀態,因為卸除目標無法配置足夠的主機記憶體。
查詢、更新、失效或終止卸除:不允許的狀態值。
NDIS_STATUS_OFFLOAD_TCP_ENTRIES
起始卸除:卸除目標無法卸除與NDIS_MINIPORT_OFFLOAD_BLOCK_LIST結構相關聯的狀態,因為卸除目標無法配置 TCP 連線狀態物件。
查詢、更新、失效或終止卸除:不允許的狀態值。
NDIS_STATUS_OFFLOAD_PATH_ENTRIES
起始卸除:卸除目標無法卸除與NDIS_MINIPORT_OFFLOAD_BLOCK_LIST結構相關聯的狀態,因為卸除目標無法配置路徑狀態物件。
查詢、更新、失效或終止卸除:不允許的狀態值。
NDIS_STATUS_OFFLOAD_NEIGHBOR_ENTRIES
起始卸除:卸除目標無法卸除與NDIS_MINIPORT_OFFLOAD_BLOCK_LIST結構相關聯的狀態,因為卸除目標無法配置鄰近狀態物件。
查詢、更新、失效或終止卸除:不允許的狀態值。
NDIS_STATUS_OFFLOAD_HW_ADDRESS_ENTRIES
起始卸除:卸除目標無法卸除與NDIS_MINIPORT_OFFLOAD_BLOCK_LIST結構相關聯的狀態,因為主機堆疊在 中指定了非NULLDlSourceAddress 成員 NEIGHBOR_OFFLOAD_STATE_CONST 結構,且卸除目標不支援可設定的來源 MAC 位址,或無法接受其他來源 MAC 位址。
查詢、更新、失效或終止卸除:不允許的狀態值。
NDIS_STATUS_OFFLOAD_IP_ADDRESS_ENTRIES
起始卸除:卸除目標無法卸除與NDIS_MINIPORT_OFFLOAD_BLOCK_LIST結構相關聯的狀態,因為卸除目標無法為 SourceAddress 指標所參考的來源 IP 位址配置數據結構 PATH_OFFLOAD_STATE_CONST 結構。
查詢、更新、失效或終止卸除:不允許的狀態值。
NDIS_STATUS_OFFLOAD_TCP_XMIT_BUFFER
起始卸除:卸除目標無法卸除與NDIS_MINIPORT_OFFLOAD_BLOCK_LIST結構相關聯的狀態,因為卸除目標無法配置足夠的 TCP 傳輸緩衝區。
查詢、更新、失效或終止卸除:不允許的狀態值。
NDIS_STATUS_OFFLOAD_TCP_RCV_BUFFER
起始卸除:卸除目標無法卸除與NDIS_MINIPORT_OFFLOAD_BLOCK_LIST結構相關聯的狀態,因為卸除目標無法配置足夠的 TCP 接收緩衝區。
查詢、更新、失效或終止卸除:不允許的狀態值。
NDIS_STATUS_OFFLOAD_TCP_RCV_WINDOW
起始卸除:卸除目標無法卸除與NDIS_MINIPORT_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[2]
保留供 NDIS 使用。
MiniportOffloadContext
卸除目標寫入 PVOID 值的記憶體位置指標。 PVOID 值會參考卸除內容區域,其中卸除目標會儲存與NDIS_MINIPORT_OFFLOAD_BLOCK_LIST結構相關聯的狀態。 如果狀態是卸除目標所要卸除的新狀態,MiniportOffloadContext 所指向的記憶體位置 包含 NULL 值。 卸除狀態之後,卸除目標會將 PVOID 值寫入此記憶體位置。 卸除目標所提供的 PVOID 值會參考卸除狀態卸除所在的卸除內容區域。 如果 MiniportOffloadContext 成員本身 NULL,則NDIS_MINIPORT_OFFLOAD_BLOCK_LIST結構是卸除狀態樹狀結構中的佔位符。
NdisOffloadHandle
卸除目標在後續呼叫 中提供的句柄 NdisTcpOffloadEventHandler 函式或 NdisTcpOffloadReceiveHandler 函式,當發出與此NDIS_MINIPORT_OFFLOAD_BLOCK_LIST結構相關聯之卸除狀態的指示時。
ProtocolReserved[2]
保留供通訊協定驅動程式使用,此區域可用於自己的用途。 卸除目標不得修改此值。
MiniportReserved[2]
保留供卸除目標使用,其可針對自己的用途使用此區域,例如佇列與NDIS_MINIPORT_OFFLOAD_BLOCK_LIST結構相關聯的卸除狀態。
ImReserved[2]
保留供中繼驅動程式使用,此區域可用於自己的用途。 卸除目標不得修改此值。
Scratch[2]
卸除目標可以使用此區域進行內部追蹤。 只有在卸除目標擁有NDIS_MINIPORT_OFFLOAD_BLOCK_LIST的擁有權時,此區域中的資訊才有效。
SourceHandle
對於卸除目標而言,這個成員並不重要。 卸除目標不得修改此成員。
PortNumber
識別迷你埠配接器埠的埠號碼。 若要指派迷你埠埠連接埠號碼,請呼叫 NdisMAllocatePort 函式。 零值會識別迷你埠配接器的預設埠。 如果迷你埠驅動程式尚未為指定的配接器配置埠,請使用預設埠。
NetBufferListChain
當主機堆疊指定 NULL 值時,NetBufferListChain 並不重要,而且卸除目標可以忽略。
當主機堆疊指定非NULL 值時,NetBufferListChain 指向可以是獨立結構或這類結構連結清單中的第一個結構 NET_BUFFER_LIST 結構。 鏈接清單中的每個NET_BUFFER_LIST結構都會描述一個 NET_BUFFER 結構。 NET_BUFFER結構會對應至記憶體描述元清單鏈結(MDL)。 NET_BUFFER_LIST和相關聯的結構會鎖定,讓它們保留在物理記憶體中。 不過,它們不會對應到系統記憶體中。
與NET_BUFFER結構相關聯的 MDL 包含主機堆疊在卸除作業中傳遞至卸除目標的數據。 卸除目標會呼叫適當的 NdisTcpOffloadXxxComplete 函式,以異步方式完成這類數據回到主機堆疊。 目前,連結清單只能包含一種類型的數據:未處理的傳送數據。 如需詳細資訊,請參閱 處理卸除作業期間和卸除作業之後的未處理傳送數據。
卸除目標可以在終止 TCP 連線卸除時,將未處理的傳送數據傳遞至主機堆疊。 在此情況下,卸除目標會在呼叫 時指定 NetBufferListChain 成員的非NULL 值 NdisMTerminateOffloadComplete 函式。 如果卸除目標未針對正在終止的 TCP 連線傳遞傳送數據,它就必須為 NetBufferListChain 成員指定 NULL 值。
言論
NDIS_MINIPORT_OFFLOAD_BLOCK_LIST結構可以連結在一起,以建置 TCP 煙囪架構,卸除狀態樹狀結構。
透過 NDIS,主機堆疊會將 OffloadBlockList 指標傳遞,該指標會將卸除狀態樹參考至卸除目標的下列其中一個函式:
- NdisMInitiateOffloadComplete
- NdisMQueryOffloadStateComplete
- NdisMInvalidateOffloadComplete
- NdisMTerminateOffloadComplete
主機堆疊和卸除目標會使用 *MiniportOffloadContext 和 NdisOffloadHandle NDIS_MINIPORT_OFFLOAD_BLOCK_LIST 結構的成員來參考卸除狀態。 如需詳細資訊,請參閱 儲存和參考卸除狀態。
NDIS_MINIPORT_OFFLOAD_BLOCK_LIST結構可以在卸除狀態樹狀結構中執行數個函式之一。 它可以做為佔位元、連結器,也可以傳達卸除目標要卸除的新狀態。 如需詳細資訊,請參閱 佔位元元、連結器和新的卸除。
完成起始卸除、查詢卸除、更新卸除、使卸除失效或終止卸載作業之前,卸除目標必須將完成狀態寫入狀態 狀態 狀態樹狀結構中每個NDIS_MINIPORT_OFFLOAD_BLOCK_LIST結構的成員。
要求
要求 | 價值 |
---|---|
標頭 | ndischimney.h (包括 Ndischimney.h) |