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 參數中指定集區句柄。 例如,ProtocolTypeNET_BUFFER_LIST 結構的成員與集區相關聯。
複製 NET_BUFFER_LIST 結構描述 OriginalNetBufferListNET_BUFFER_LIST 結構所描述的相同數據。 NDIS 不會將原始 MDL 所描述的數據複製到新的數據緩衝區。 相反地,複製的結構會參考原始的數據緩衝區。 複製 NET_BUFFER_LIST 結構不包含初始 NET_BUFFER_LIST_CONTEXT 結構。
呼叫 NdisFreeCloneNetBufferList 函式,以釋放 NET_BUFFER_LIST 結構,以及呼叫 NdisAllocateCloneNetBufferList配置的所有相關聯結構和 MDL 鏈結。
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | NDIS 6.0 和更新版本支援。 |
目標平臺 | 普遍 |
標頭 | ndis/nblapi.h (include ndis.h) |
連結庫 | Ndis.lib |
IRQL | <= DISPATCH_LEVEL |
DDI 合規性規則 | Irql_NetBuffer_Function(ndis), NdisAllocateCloneNetBufferList(ndis), NdisAllocateCloneNetBufferList_InitFail(ndis) |