共用方式為


NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST結構(ndischimney.h)

[TCP 煙囪卸除功能已被取代,不應使用。]

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結構的指標,位於卸除狀態層的下一個NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST結構(芳鄰、路徑或 TCP),由 標頭 成員的 Type 成員表示。 透過 NextBlock 連結的NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST結構, 指標一律位於卸除狀態的同一層。 NextBlockNULL 表示此層級沒有額外的下一個NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST結構。

_NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST

DependentBlockList

位於卸除狀態相依層之NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST結構的指標(卸除狀態樹狀結構中的較高層)。

針對 TCP 煙囪卸除:

DependentBlockList 鄰近層NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST結構的成員只能指向路徑層的NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST結構。 DependentBlockList 路徑層NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST結構的成員只能指向 TCP 層的NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST結構。 TCP 層NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST結構的 DependentBlockList 成員一律 NULL

DependentBlockListnull 值表示沒有相依NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST結構。

Status

起始卸除、查詢卸除、更新卸除、使卸除失效或終止卸除目標的完成狀態,或由 NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST 結構參考的卸除目標。 根據作業而定,NDIS 會將下列其中一個NDIS_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

此成員對通訊協定或中繼驅動程式而言並不重要。 通訊協定或中繼驅動程式不得修改這個成員。

傳播狀態作作業完成時,中繼驅動程式會複製
SourceHandle 儲存在其 IM 呼叫 專案中的 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 結構 標頭的成員 指定卸除狀態的類型,並以隱含方式指定記憶體中NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST結構之後的特定卸除狀態結構(或結構)。

要求

要求 價值
標頭 ndischimney.h (包括 Ndischimney.h)

另請參閱

NDIS_OBJECT_HEADER

NEIGHBOR_OFFLOAD_STATE_CACHED

NEIGHBOR_OFFLOAD_STATE_CONST

NEIGHBOR_OFFLOAD_STATE_DELEGATED

NdisInitiateOffload

NdisInvalidateOffload

NdisMAllocatePort

NdisQueryOffload

NdisTerminateOffload

NdisUpdateOffload

PATH_OFFLOAD_STATE_CACHED

PATH_OFFLOAD_STATE_CONST

PATH_OFFLOAD_STATE_DELEGATED

ProtocolInitiateOffloadComplete ProtocolInvalidateOffloadComplete ProtocolQueryOffloadComplete ProtocolTerminateOffloadComplete ProtocolUpdateOffloadComplete

TCP_OFFLOAD_STATE_CACHED

TCP_OFFLOAD_STATE_CONST

TCP_OFFLOAD_STATE_DELEGATED