NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY结构(ndis.h)

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

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

语法

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 结构。

标头类型 成员必须设置为NDIS_OBJECT_TYPE_DEFAULT。 若要指定 NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY 结构的版本,必须将 标头修订版 成员设置为以下值:

NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY_REVISION_1

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

大小 成员设置为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 成员的值指定当前使用的 NDIS_SWITCH_PORT_DESTINATION 元素数(由 NumDestinations 成员指定)以及可用于新目标端口的元素数。 NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY 结构中未使用的 NDIS_SWITCH_PORT_DESTINATION 元素数由 (NumElements - NumDestinations) 计算。

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 成员。 转发扩展还可以更改 preserveVLAN ,并 PreservePriority 成员。
       
    如果扩展添加或修改端口目标,则必须调用 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