NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY 结构 (ndis.h)

NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY 结构指定数据包的 Hyper-V 可扩展交换机目标端口数组。 数组中的每个元素都格式化为 NDIS_SWITCH_PORT_DESTINATION 结构。

此信息包含在带外 (OOB) 数据包 NET_BUFFER_LIST 结构的数据中。

语法

typedef struct _NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY {
  NDIS_OBJECT_HEADER Header;
  UINT32             ElementSize;
  UINT32             NumElements;
  UINT32             NumDestinations;
  PVOID              FirstElement;
} NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY, *PNDIS_SWITCH_FORWARDING_DESTINATION_ARRAY;

成员

Header

NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY 结构的类型、修订和大小。 此成员的格式设置为 NDIS_OBJECT_HEADER 结构。

HeaderType 成员必须设置为 NDIS_OBJECT_TYPE_DEFAULT。 若要指定 NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY 结构的版本,必须将 HeaderRevision 成员设置为以下值:

NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY_REVISION_1

NDIS 6.30 及更高版本的原始版本。

Size 成员设置为 NDIS_SIZEOF_NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY_REVISION_1。

ElementSize

一个 ULONG 值,该值指定NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY 结构后面的每个 NDIS_SWITCH_PORT_DESTINATION 元素的大小 以字节为单位)。

NumElements

一个 ULONG 值,该值指定NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY 结构中NDIS_SWITCH_PORT_DESTINATION元素的总数。

NumElements 成员的值指定由 NumDestinations 成员 () 指定的当前使用的NDIS_SWITCH_PORT_DESTINATION元素数,以及可用于新目标端口的元素数。 NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY 结构中未使用的NDIS_SWITCH_PORT_DESTINATION元素数由 NumElementsNumDestinations - ) (计算。

NumDestinations

一个 ULONG 值,该值指定 NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY 结构中指定端口目标的 NDIS_SWITCH_PORT_DESTINATION 元素的数目。

注意 如果 NumElements 设置为零,则忽略此成员。
 

FirstElement

指向缓冲区中第一个 NDIS_SWITCH_PORT_DESTINATION 元素的指针,该元素包含 NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY 结构及其所有元素。

注解

可扩展交换机扩展可以使用数据包 NET_BUFFER_LIST 结构中的目标端口执行以下操作:

  • 查询数据包将转发到的可扩展交换机上的当前目标端口。

    可扩展交换机扩展调用 GetNetBufferListDestinations 函数以获取数据包的端口目标数组。 GetNetBufferListDestinations 返回指向 Destinations 参数中的 NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY 结构的指针。

    有关详细信息,请参阅 查询数据包的可扩展交换机目标端口数据

  • 添加或修改数据包的目标端口。

    在查询数据包的当前目标端口后,可扩展交换机扩展可以执行以下操作:

    • 转发扩展可以将新的目标端口添加到 NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY 结构。
    • 筛选或转发扩展插件可以修改目标端口 NDIS_SWITCH_PORT_DESTINATION 结构中的数据。
      注意 筛选扩展只能更改此结构的 IsExcluded 成员。 转发扩展还可以更改 PreserveVLANPreservePriority 成员。
       
    如果扩展添加或修改端口目标,则必须调用 UpdateNetBufferListDestinations ,以将目标端口的更改提交到 NET_BUFFER_LIST 结构中的数据包的 OOB 数据。

    有关详细信息,请参阅 管理 Hyper-V 可扩展交换机目标端口数据

可扩展开关扩展可以使用 NDIS_SWITCH_PORT_DESTINATION_AT_ARRAY_INDEX 宏访问 NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY 数组中的 NDIS_SWITCH_PORT_DESTINATION 元素。

要求

要求
最低受支持的客户端 在 NDIS 6.30 及更高版本中受支持。
标头 ndis.h (包括 Ndis.h)

另请参阅

将可扩展交换机目标端口数据添加到数据包

排除将数据包传送到可扩展交换机目标端口

转发扩展

GetNetBufferListDestinations

混合转发

NDIS_OBJECT_HEADER

NDIS_SWITCH_PORT_DESTINATION

NDIS_SWITCH_PORT_DESTINATION_AT_ARRAY_INDEX

NET_BUFFER_LIST

Hyper-V 可扩展交换机概述

UpdateNetBufferListDestinations