NDIS_SWITCH_ALLOCATE_NET_BUFFER_LIST_FORWARDING_CONTEXT回呼函式 (ndis.h)
AllocateNetBufferListForwardingContext 函式會準備可延伸交換器內傳送或接收作業的NET_BUFFER_LIST結構。
語法
NDIS_SWITCH_ALLOCATE_NET_BUFFER_LIST_FORWARDING_CONTEXT NdisSwitchAllocateNetBufferListForwardingContext;
NDIS_STATUS NdisSwitchAllocateNetBufferListForwardingContext(
[in] NDIS_SWITCH_CONTEXT NdisSwitchContext,
[in, out] PNET_BUFFER_LIST NetBufferList
)
{...}
參數
[in] NdisSwitchContext
NDIS_SWITCH_CONTEXT值,其中包含附加 Hyper-V 可延伸交換器擴充功能之可延伸交換器模組的句柄。 當擴充功能呼叫 NdisFGetOptionalSwitchHandlers 時,此句柄會透過 NdisSwitchContext 參數傳回。
[in, out] NetBufferList
NET_BUFFER_LIST 結構連結清單的指標。
傳回值
如果呼叫成功,函式會傳回NDIS_STATUS_SUCCESS。 否則,它會傳回 Ndis.h 中定義的NDIS_STATUS_Xxx 錯誤碼。
備註
可延伸交換器延伸模組可以在可延伸交換器數據路徑內產生封包傳送作業。 例如,擴充功能可以將封包傳送至可延伸交換器上的任何埠。 如需此數據路徑的詳細資訊,請參閱 Hyper-V 可延伸交換器數據路徑。
擴充功能呼叫 NdisAllocateNetBufferList 或 NdisAllocateCloneNetBufferList 以從其 NET_BUFFER_LIST 集區建立或複製封包之後,延伸模組必須呼叫 AllocateNetBufferListForwardingContext 函式。 此函式會 為指定的NET_BUFFER_LIST 結構配置和初始化頻外 (OOB) 可延伸切換轉送內容。 如需此內容的詳細資訊,請參閱 Hyper-V 可延伸交換器轉送內容。
延伸模組必須遵循下列指導方針,才能透過 AllocateNetBufferListForwardingContext 函式配置轉送內容:
-
擴充功能會呼叫 NdisAllocateNetBufferList ,從擴充功能的 NET_BUFFER_LIST 集區配置封包,以便透過可延伸交換器傳送或接收作業。 在擴充功能初始化封包的來源和目的地埠之前,它必須呼叫 AllocateNetBufferListForwardingContext。
如需如何指定來源和目的地可延伸交換器埠的詳細資訊,請參閱 管理 Hyper-V 可延伸交換器來源和目的地埠數據。
- 在延伸模組呼叫 AllocateNetBufferListForwardingContext 之前,它必須將每個配置之NET_BUFFER_LIST結構的 SourceHandle 成員設定為識別延伸模組的句柄值。 當 NDIS 呼叫延伸模組的 FilterAttach 函式時,擴充功能會透過 NdisFilterHandle 參數接收此句柄。
- 當傳送作業完成時,延伸模組必須呼叫 FreeNetBufferListForwardingContext 函式,以解除分配轉送內容的資源。 擴充功能必須先呼叫此函式, 才能呼叫 NdisFreeNetBufferList ,以將封包傳回至其 NET_BUFFER_LIST 集區。
- 如果延伸模組正在複製封包,它必須呼叫 CopyNetBufferListInfo ,將轉送內容從原始封包複製到複製的封包。 擴充功能必須在呼叫 AllocateNetBufferListForwardingContext 之後執行此動作。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | NDIS 6.30 和更新版本支援。 |
目標平台 | 桌面 |
標頭 | ndis.h (包含 Ndis.h) |
IRQL | <= DISPATCH_LEVEL |
另請參閱
FreeNetBufferListForwardingContext
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應