FwpsAllocateCloneNetBufferList0 函式 (fwpsk.h)
FwpsAllocateCloneNetBufferList0 函式會配置 NET_BUFFER_LIST 結構,這是現有 NET_BUFFER_LIST 結構的複製品。
語法
NTSTATUS FwpsAllocateCloneNetBufferList0(
[in, out] NET_BUFFER_LIST *originalNetBufferList,
[in, optional] NDIS_HANDLE netBufferListPoolHandle,
[in, optional] NDIS_HANDLE netBufferPoolHandle,
[in] ULONG allocateCloneFlags,
[out] NET_BUFFER_LIST **netBufferList
);
參數
[in, out] originalNetBufferList
正在複製之原始 NET_BUFFER_LIST 結構的指標。
[in, optional] netBufferListPoolHandle
從先前呼叫 取得的 NET_BUFFER_LIST 集區句柄 NdisAllocateNetBufferListPool 函式。 這個參數是選擇性的,而且可以 NULL。
[in, optional] netBufferPoolHandle
從先前呼叫 NdisAllocateNetBufferPool 函式取得的 NET_BUFFER 集區句柄。 這個參數是選擇性的,而且可以 NULL。
[in] allocateCloneFlags
此函式目前沒有定義旗標。 圖說文字驅動程式應該將此參數設定為零。
[out] netBufferList
接收複製 NET_BUFFER_LIST 結構的指標之變數指標。
傳回值
FwpsAllocateCloneNetBufferList0 函式會傳回下列其中一個 NTSTATUS 代碼。
傳回碼 | 描述 |
---|---|
|
已成功配置複製 NET_BUFFER_LIST 結構。 |
|
發生錯誤。 |
言論
圖說驅動程式會呼叫 FwpsAllocateCloneNetBufferList0 函式,以配置現有NET_BUFFER_LIST結構的複製 NET_BUFFER_LIST 結構。
此函式是 周圍的包裝函式 NdisAllocateCloneNetBufferList 函式,但它是特製化的,供 WFP 封包插入函式使用。
如果複製NET_BUFFER_LIST結構應該具有與特定集區相關聯的屬性,則圖說文字驅動程式必須在 netBufferListPoolHandle 或 NetBufferPoolHandle 參數中指定集區句柄。 如果這些參數 NULL,則會使用 NDIS 預先配置的預設集區。
複製NET_BUFFER_LIST結構描述原始NET_BUFFER_LIST結構所描述的相同數據。 FwpsAllocateCloneNetBufferList0 函式不會將原始 MDL 描述的數據複製到新的數據緩衝區。 相反地,複製NET_BUFFER_LIST結構會參考原始數據緩衝區。 複製NET_BUFFER_LIST結構不包含初始 NET_BUFFER_LIST_CONTEXT 結構。
此函式會將新建立之複製NET_BUFFER_LIST結構的 ParentNetBufferList 成員設定為指向父NET_BUFFER_LIST結構。 父結構的 ChildRefCount 成員會遞增 1。
圖說文字驅動程式可以修改複製NET_BUFFER_LIST結構,並將它插入網路堆疊,以取代原始NET_BUFFER_LIST結構,方法是呼叫 封包插入函式。 複製NET_BUFFER_LIST結構描述的數據成功插入網路堆疊之後,圖說文字驅動程式會藉由呼叫 FwpsFreeCloneNetBufferList0 函式釋放複製NET_BUFFER_LIST結構。
圖說驅動程式可以在複製 net 緩衝區清單內插入或取代個別的 net 緩衝區(NET_BUFFER) 或 MDL。 這類驅動程式也必須在呼叫 之前復原修改 FwpsFreeCloneNetBufferList0 函式。
管理複製封包的 指導方針
圖說文字驅動程式不得無限期保存複製的封包。 複製的封包可能會干擾閑置計算機上的電源管理作業。計劃署中複製封包的用途是從使用者模式應用程式或其他相對快速的作業取得釐清。 圖說文字驅動程式不得保存複製的封包,例如等候使用者輸入或等候 Web 服務清除,或等候任何其他可能需要任意時間的作業。
如果圖說驅動程式需要等候可能冗長的作業,它會使用 進行封包的深層複本 FwpsAllocateNetBufferAndNetBufferList0,它會封鎖並吸收原始封包。
圖說文字驅動程序應該一律會儘快傳回保留的封包。
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | 從 Windows Vista 開始提供。 |
目標平臺 | 普遍 |
標頭 | fwpsk.h (包括 Fwpsk.h) |
連結庫 | Fwpkclnt.lib |
IRQL | <= DISPATCH_LEVEL |