共用方式為


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 可延伸交換器數據路徑

擴充功能呼叫 NdisAllocateNetBufferListNdisAllocateCloneNetBufferList 以從其 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 之後執行此動作。
如需如何產生傳送作業的詳細資訊,請參閱 篩選模塊傳送和接收作業
注意 如果 NetBufferList 參數包含多個 NET_BUFFER_LIST 結構連結清單的指標,則清單中只有第一個 NET_BUFFER_LIST 結構已為其配置轉送內容。
 

規格需求

需求
最低支援的用戶端 NDIS 6.30 和更新版本支援。
目標平台 桌面
標頭 ndis.h (包含 Ndis.h)
IRQL <= DISPATCH_LEVEL

另請參閱

CopyNetBufferListInfo

FilterAttach

FreeNetBufferListForwardingContext

NET_BUFFER

NET_BUFFER_LIST

NdisAllocateNetBufferList

NdisFGetOptionalSwitchHandlers

NdisFreeNetBufferList