NdisAllocateCloneNetBufferList 函式 (ndis/nblapi.h)

呼叫 NdisAllocateCloneNetBufferList 函式,以建立新的複製 NET_BUFFER_LIST 結構。

語法

NDIS_EXPORTED_ROUTINE NET_BUFFER_LIST * NdisAllocateCloneNetBufferList(
  [in]           NET_BUFFER_LIST *OriginalNetBufferList,
  [in, optional] NDIS_HANDLE     NetBufferListPoolHandle,
  [in, optional] NDIS_HANDLE     NetBufferPoolHandle,
  [in]           ULONG           AllocateCloneFlags
);

參數

[in] OriginalNetBufferList

現有 NET_BUFFER_LIST 結構的指標。

[in, optional] NetBufferListPoolHandle

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

[in, optional] NetBufferPoolHandle

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

[in] AllocateCloneFlags

可與 OR 作業結合的 NDIS 旗標。 定義下列旗標:

NDIS_CLONE_FLAGS_RESERVED

保留給 NDIS。

NDIS_CLONE_FLAGS_USE_ORIGINAL_MDLS

如果設定此旗標,NDIS 不會為複製 的NET_BUFFER_LIST配置新的 MDL。 相反地,複製 的NET_BUFFER_LIST 會使用與原始 NET_BUFFER_LIST相同的 MDL 鏈結。 如果清除NDIS_CLONE_FLAGS_USE_ORIGINAL_MDLS,NDIS 會配置新的 MDL 來參考原始數據緩衝區。

傳回值

NdisAllocateCloneNetBufferList 會傳回新複製 NET_BUFFER_LIST 結構的指標。 如果配置失敗,則此指標為 NULL

備註

呼叫 NdisAllocateCloneNetBufferList 來建立複製 NET_BUFFER_LIST 結構,讓您可用來在個別的數據路徑上傳送重複的數據。

原始NET_BUFFER_LIST結構中的每個NET_BUFFER結構只會從使用的數據空間開頭複製,而不是整個數據空間的開頭。 若要從數據空間的開頭到已使用之數據空間的開頭取得位移,請使用 NET_BUFFER_DATA_OFFSET 宏。

如果複製的NET_BUFFER_LIST結構應該具有與指定集區相關聯的屬性,呼叫端必須在 NetBufferListPoolHandle 或 NetBufferPoolHandle 參數中指定集區句柄。 例如,NET_BUFFER_LIST 結構的 ProtocolType 成員與集區相關聯。

複製NET_BUFFER_LIST結構描述在 OriginalNetBufferListNET_BUFFER_LIST結構所描述的相同數據。 NDIS 不會將原始 MDL 所描述的數據複製到新的數據緩衝區。 相反地,複製的結構會參考原始數據緩衝區。 複製 NET_BUFFER_LIST 結構不包含初始 NET_BUFFER_LIST_CONTEXT 結構。

呼叫 NdisFreeCloneNetBufferList 函式可釋放 NET_BUFFER_LIST 結構,以及呼叫 NdisAllocateCloneNetBufferList 所配置的所有相關聯結構和 MDL 鏈結。

規格需求

需求
最低支援的用戶端 NDIS 6.0 和更新版本支援。
目標平台 Universal
標頭 ndis/nblapi.h (include ndis.h)
程式庫 Ndis.lib
IRQL <= DISPATCH_LEVEL
DDI 合規性規則 Irql_NetBuffer_Function (ndis) 、NdisAllocateCloneNetBufferList (ndis) ,NdisAllocateCloneNetBufferList_InitFail (ndis)

另請參閱

NET_BUFFER

NET_BUFFER_LIST

NET_BUFFER_LIST_CONTEXT

NdisAllocateNetBufferListPool

NdisAllocateNetBufferPool

NdisFreeCloneNetBufferList