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結構描述在 OriginalNetBufferList 上NET_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) |