共用方式為


NdisAllocateFragmentNetBufferList 函式 (ndis/nblapi.h)

呼叫 NdisAllocateFragmentNetBufferList 函式,根據現有NET_BUFFER_LIST結構中的數據建立新的分散 NET_BUFFER_LIST 結構。

語法

NDIS_EXPORTED_ROUTINE NET_BUFFER_LIST * NdisAllocateFragmentNetBufferList(
  [in] NET_BUFFER_LIST *OriginalNetBufferList,
       NDIS_HANDLE     NetBufferListPool,
       NDIS_HANDLE     NetBufferPool,
  [in] ULONG           StartOffset,
  [in] ULONG           MaximumLength,
  [in] ULONG           DataOffsetDelta,
  [in] ULONG           DataBackFill,
  [in] ULONG           AllocateFragmentFlags
);

參數

[in] OriginalNetBufferList

現有NET_BUFFER_LIST結構的指標。

NetBufferListPool

從呼叫取得的句柄 NdisAllocateNetBufferListPool 函式。

NetBufferPool

先前從呼叫傳回的NET_BUFFER結構集區句柄 NdisAllocateNetBufferPool

[in] StartOffset

每個 NET_BUFFER 結構中數據開頭的額外位元組位移。 這個位移除了每個NET_BUFFER結構中指定的 DataOffset 成員的值之外。

[in] MaximumLength

新NET_BUFFER_LIST結構中每個片段的最大長度,以位元組為單位。 每個片段都會由NET_BUFFER結構描述。

[in] DataOffsetDelta

NDIS 應該在新NET_BUFFER結構中提供的額外 使用數據空間量

[in] DataBackFill

除了 DataOffsetDelta 的值之外,還需要配置時配置的數據空間量 參數。 如果 NDIS 必須配置記憶體,以提供 dataOffsetDelta 所要求的數據空間,它也應該配置 dataBackFill 指定 的額外空間。

[in] AllocateFragmentFlags

可以與 OR 作業結合的 NDIS 旗標。 將此參數設定為零。 此函式目前沒有定義旗標。

傳回值

NdisAllocateFragmentNetBufferList 會傳回新片段NET_BUFFER_LIST結構的指標。 如果設定失敗,則傳回值 NULL

言論

NdisAllocateFragmentNetBufferList 配置並初始化新的片段 NET_BUFFER_LIST 結構和 NET_BUFFER 結構,這些結構描述呼叫者傳遞給 NdisAllocateFragmentNetBufferList所 NET_BUFFER_LIST描述的相同數據。

如果片段NET_BUFFER_LIST結構應該具有與指定集區相關聯的屬性,則呼叫者必須在 netBufferListPoolHandleNetBufferPoolHandle 參數中指定集區句柄。 例如,ProtocolType NET_BUFFER_LIST 結構的成員與集區相關聯。

針對指定來源NET_BUFFER_LIST結構中的每個NET_BUFFER結構,NDIS 會建立片段NET_BUFFER結構,如下所示:

  • NDIS 會從來源NET_BUFFER結構 使用的數據空間 開始建立片段,並依 StartOffset 參數中指定的值位移。
  • NDIS 會將來源NET_BUFFER結構中 StartOffset 中所使用的數據空間分割成片段。
  • 每個片段的數據空間 長度小於或等於 MaximumLength 參數中指定的值。 最後一個片段 已使用的數據空間可以小於 MaximumLength
  • 每個片段都會由新的NET_BUFFER結構和一組新的 MDL 鏈結來描述。
  • 新NET_BUFFER結構的數據位移會由 DataOffsetDelta 參數中指定的位元元數目縮減(DataOffset 成員的值)。
  • 如果 NDIS 必須配置記憶體,以提供 dataOffsetDelta 所要求的數據空間,它也應該配置 dataBackFill 指定 的額外空間。
NdisAllocateFragmentNetBufferList 建立的新片段NET_BUFFER_LIST結構不包含初始 NET_BUFFER_LIST_CONTEXT 結構。

呼叫 NdisFreeFragmentNetBufferList 函式,以釋放NET_BUFFER_LIST結構和先前透過呼叫 NdisAllocateFragmentNetBufferList配置的所有相關聯NET_BUFFER結構和 MDL 鏈結。

要求

要求 價值
最低支援的用戶端 NDIS 6.0 和更新版本支援。
目標平臺 普遍
標頭 ndis/nblapi.h (include ndis.h)
連結庫 Ndis.lib
IRQL <= DISPATCH_LEVEL
DDI 合規性規則 Irql_NetBuffer_Function(ndis),NdisAllocateFragmentNetBufferList(ndis),NdisAllocateFragmentNetBufferList_InitFail(ndis)

另請參閱

NET_BUFFER

NET_BUFFER_LIST

NET_BUFFER_LIST_CONTEXT

NdisAllocateNetBufferListPool

NdisAllocateNetBufferPool

NdisFreeFragmentNetBufferList