Hyper-V 可扩展交换机转发上下文数据类型

遍历 Hyper-V 可扩展交换机数据路径的每个数据包的 NET_BUFFER_LIST 结构都包含带外 (OOB) 数据。 此数据指定数据包源自的源端口,以及用于传递数据包的一个或多个目标端口。 此 OOB 数据称为 可扩展交换机转发上下文

已声明以下数据类型以访问数据包 NET_BUFFER_LIST 结构中的可扩展交换机转发上下文:

NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO
这是一个包含数据包转发特征的 64 位联合。 此数据包括数据包源自的源端口和网络适配器连接的标识符。 此数据还包括目标端口数组中可用的未使用的元素数。

可扩展开关扩展可以使用 NET_BUFFER_LIST_SWITCH_FORWARDING_DETAIL 宏访问此数据。

NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY
此结构定义数据包的目标端口数组。 此数组中的每个元素都格式化为 NDIS_SWITCH_PORT_DESTINATION 结构。

NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY 结构包含指定当前元素总数以及数组中已用元素数的成员。

可扩展开关扩展可以通过调用 GetNetBufferListDestinations 函数来获取此数组。 如果驱动程序在数组中添加或修改具有多个目标端口的数据包的元素,则必须调用 UpdateNetBufferListDestinations 函数。 此函数将这些更改提交到数据包转发上下文中的目标端口数组。

注意 若要将更改提交到只有一个目标端口的数据包,驱动程序调用 AddNetBufferListDestination 函数会更高效。

NDIS_SWITCH_PORT_DESTINATION
此结构定义数据包的目标端口。 对于具有单个目标端口的数据包,目标端口数组中只有一 个 NDIS_SWITCH_PORT_DESTINATION 元素。 对于具有多个目标端口的数据包,数组中有一个或多个这些元素。

在可扩展交换机扩展调用 GetNetBufferListDestinations 以获取数据包的目标端口数组后,它可以使用 NDIS_SWITCH_PORT_DESTINATION_AT_ARRAY_INDEX 宏访问数组中的单个元素。