查询数据包的可扩展交换机目标端口数据

每个 Hyper-V 可扩展交换机目标端口由 NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY 结构中的 NDIS_SWITCH_PORT_DESTINATION 元素指定。 此数组包含在带外 (OOB) 数据包 NET_BUFFER_LIST 结构的转发上下文中。 有关此上下文的详细信息,请参阅 Hyper-V 可扩展交换机转发上下文

可扩展交换机扩展调用 GetNetBufferListDestinations 函数以获取指向数据包 NET_BUFFER_LIST 结构中的 NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY 结构的指针。 可以使用 NDIS_SWITCH_PORT_DESTINATION_AT_ARRAY_INDEX 宏访问此结构中的单个 NDIS_SWITCH_PORT_DESTINATION 元素。

为了提高性能,转发扩展可以调用 GrowNetBufferListDestinations 函数而不是 GetNetBufferListDestinations 来获取指向 NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY 结构的指针。 如果扩展确定目标端口在数据包的 OOB 数据中需要其他数组元素,则会执行此操作。 有关详细信息,请参阅 将可扩展交换机目标端口数据添加到数据包

注意 只有从可扩展交换机出口数据路径获取的数据包才会包含目标端口信息。 有关详细信息,请参阅 Hyper-V 可扩展交换机数据路径