共用方式為


NDIS_SWITCH_ADD_NET_BUFFER_LIST_DESTINATION回呼函式 (ndis.h)

AddNetBufferListDestination 函式會針對由 NET_BUFFER_LIST 結構指定的封包新增單一目的地埠。

語法

NDIS_SWITCH_ADD_NET_BUFFER_LIST_DESTINATION NdisSwitchAddNetBufferListDestination;

NDIS_STATUS NdisSwitchAddNetBufferListDestination(
  [in]      NDIS_SWITCH_CONTEXT NdisSwitchContext,
  [in, out] PNET_BUFFER_LIST NetBufferList,
  [in]      PNDIS_SWITCH_PORT_DESTINATION Destination
)
{...}

參數

[in] NdisSwitchContext

NDIS_SWITCH_CONTEXT值,其中包含附加 Hyper-V 可延伸交換器擴充功能之可延伸交換器模組的句柄。 當擴充功能呼叫 NdisFGetOptionalSwitchHandlers 時,此句柄會透過 NdisSwitchContext 參數傳回。

[in, out] NetBufferList

封包 之NET_BUFFER_LIST 結構的指標。

注意 這個結構必須包含可延伸的交換器轉送內容。 如果擴充功能已建立或複製封包,則它之前必須呼叫 AllocateNetBufferListForwardingContext 函式來配置此結構。
 

[in] Destination

NDIS_SWITCH_PORT_DESTINATION 結構的指標。 這個結構會指定封包將轉送至的目的地可延伸交換器埠。

傳回值

如果呼叫成功,函式會傳回NDIS_STATUS_SUCCESS。 否則,它會傳回 Ndis.h 中定義的NDIS_STATUS_Xxx 錯誤碼。

備註

轉送可延伸交換器擴充功能會呼叫 AddNetBufferListDestination ,以定義封包的單一可延伸交換器目的地埠。 延伸模組會藉由初始化 NDIS_SWITCH_PORT_DESTINATION 結構來指定此埠。 延伸模組會將 Destination 參數設定為此結構的指標。 如需如何指定可延伸交換器目的地埠的詳細資訊,請參閱 管理 Hyper-V 可延伸交換器目的地埠數據

注意 基於效能考慮,擴充功能不應該呼叫具有多個目的地埠的 AddNetBufferListDestination 封包。
 
擴充功能必須先遵循下列指導方針,才能呼叫 AddNetBufferListDestination
  • 只有轉送延伸模組可以呼叫 AddNetBufferListDestination 來新增封包的目的地埠。 如需此類型延伸模組的詳細資訊,請參閱 轉送延伸模組
  • 如果轉送延伸模組是使用一個目的地埠產生封包,則延伸模組必須先呼叫 AllocateNetBufferListForwardingContext 函式。 此函式會配置封包的可延伸交換器轉送內容。 此數據包含封包的頻外 (OOB) 資訊內的可延伸交換器來源和目的地埠。

    如需此內容的詳細資訊,請參閱 Hyper-V 可延伸交換器轉送內容

  • 擴充功能修改 NDIS_SWITCH_PORT_DESTINATION 結構中的目的地埠信息之後,它會呼叫 AddNetBufferListDestination ,以認可封包 NET_BUFFER_LIST 結構的變更。
    注意 基於效能考慮,擴充功能不應該呼叫 UpdateNetBufferListDestinations 函式來認可封包的變更。
     
注意轉送延伸模塊認可目的地埠變更至轉送內容之後,就無法移除目的地埠,而且只能變更目的地埠NDIS_SWITCH_PORT_DESTINATION結構的IsExcluded成員。 如需詳細資訊,請參閱 排除封包傳遞至可延伸交換器目的地埠
 

規格需求

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

另請參閱

GetNetBufferListDestinations

NDIS_SWITCH_PORT_DESTINATION

NET_BUFFER

NET_BUFFER_LIST

NdisFGetOptionalSwitchHandlers

UpdateNetBufferListDestinations