NDIS_SWITCH_UPDATE_NET_BUFFER_LIST_DESTINATIONS回调函数 (ndis.h)

Hyper-V 可扩展交换机扩展调用 UpdateNetBufferListDestinations 函数,以提交扩展对包含多个可扩展交换机目标端口的数据包所做的修改。 函数将这些修改保存到带外 (OOB) 数据包 NET_BUFFER_LIST 结构的可扩展交换机转发上下文。

语法

NDIS_SWITCH_UPDATE_NET_BUFFER_LIST_DESTINATIONS NdisSwitchUpdateNetBufferListDestinations;

NDIS_STATUS NdisSwitchUpdateNetBufferListDestinations(
  [in]      NDIS_SWITCH_CONTEXT NdisSwitchContext,
  [in, out] PNET_BUFFER_LIST NetBufferList,
  [in]      UINT32 NumberOfNewDestinations,
  [in]      PNDIS_SWITCH_FORWARDING_DESTINATION_ARRAY Destinations
)
{...}

参数

[in] NdisSwitchContext

一个 NDIS_SWITCH_CONTEXT 值,该值包含 Hyper-V 可扩展交换机扩展所附加到的可扩展交换机模块的句柄。 当扩展调用 NdisFGetOptionalSwitchHandlers 时,此句柄通过 NdisSwitchContext 参数返回。

[in, out] NetBufferList

指向单个数据包 NET_BUFFER_LIST 结构的指针。

注意 此结构必须包含可扩展的交换机转发上下文。 如果扩展创建或克隆了数据包,则它之前必须通过调用 AllocateNetBufferListForwardingContext 函数分配此结构。
 

[in] NumberOfNewDestinations

一个 UINT32 值,该值指定已添加到数据包的新目标端口数。

[in] Destinations

指向 NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY 结构的指针。 此结构指定数据包的可扩展交换机目标端口。

注意 扩展通过先前对 GetNetBufferListDestinations 函数的调用接收了此结构。
 

返回值

如果调用成功,该函数将返回NDIS_STATUS_SUCCESS。 否则,它将返回在 Ndis.h 中定义的 NDIS_STATUS_Xxx 错误代码。

注解

可扩展交换机扩展调用 GetNetBufferListDestinations 函数以获取数据包的可扩展交换机目标端口的数组。 如果函数成功返回,则通过 Destinations 参数获取数组,该参数包含指向 NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY 结构的指针。 此数组中的每个元素都格式化为 NDIS_SWITCH_PORT_DESTINATION 结构,该结构指定数据包的目标端口。

扩展获取 NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY 结构后,扩展可以执行以下操作:

如果扩展在 NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY 结构中添加或修改目标端口,则扩展必须调用 UpdateNetBufferListDestinations 函数,以将这些更改提交到数据包 的NET_BUFFER_LIST 结构。
注意 只有转发扩展可以调用 UpdateNetBufferListDestinations 来提交已为具有多个目标端口的数据包添加或更改的目标端口。 有关此类扩展的详细信息,请参阅 转发扩展
 
如果对 UpdateNetBufferListDestinations 的 调用返回NDIS_STATUS_SUCCESS,则可扩展交换机接口保证在完成数据包的发送或接收操作之前,不会删除目标端口中引用的可扩展交换机端口和网络适配器连接。

此外,在提交目标端口的更改后,无法删除目标端口,并且只能更改目标端口NDIS_SWITCH_PORT_DESTINATION结构的 IsExcluded 成员。 有关详细信息,请参阅 排除到可扩展交换机目标端口的数据包传递

注意 出于性能原因,扩展不应调用 UpdateNetBufferListDestinations 函数将更改提交到只有一个目标端口的数据包。 相反,扩展会调用 AddNetBufferListDestination 将更改提交到数据包的目标端口。
 
有关可扩展交换机转发上下文的详细信息,请参阅 Hyper-V 可扩展交换机转发上下文

要求

要求
最低受支持的客户端 在 NDIS 6.30 及更高版本中受支持。
目标平台 桌面
标头 ndis.h (包括 Ndis.h)
IRQL <= DISPATCH_LEVEL

另请参阅

AllocateNetBufferListForwardingContext

GetNetBufferListDestinations

NDIS_SWITCH_PORT_DESTINATION

NET_BUFFER

NET_BUFFER_LIST

NdisFGetOptionalSwitchHandlers

NdisFOidRequest

OID_SWITCH_NIC_DELETE