NDIS_SWITCH_GET_NET_BUFFER_LIST_DESTINATIONS回调函数 (ndis.h)

GetNetBufferListDestinations 函数返回由 NET_BUFFER_LIST 结构指定的数据包的 Hyper-V 可扩展交换机目标端口。

语法

NDIS_SWITCH_GET_NET_BUFFER_LIST_DESTINATIONS NdisSwitchGetNetBufferListDestinations;

void NdisSwitchGetNetBufferListDestinations(
  [in]      NDIS_SWITCH_CONTEXT NdisSwitchContext,
  [in, out] PNET_BUFFER_LIST NetBufferList,
  [out]     PNDIS_SWITCH_FORWARDING_DESTINATION_ARRAY *Destinations
)
{...}

参数

[in] NdisSwitchContext

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

[in, out] NetBufferList

指向 NET_BUFFER_LIST 结构链接列表的指针。

注意 如果 NetBufferList 参数包含指向多个 NET_BUFFER_LIST 结构的链接列表的指针,则仅从列表中的第一个 NET_BUFFER_LIST 结构返回目标端口。
 

[out] Destinations

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

返回值

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

注解

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

如果扩展正在分配数据包,则扩展必须先调用 AllocateNetBufferListForwardingContext 函数,然后才能调用 GetNetBufferListDestinationsAllocateNetBufferListForwardingContext 函数为数据包分配可扩展的交换机转发上下文。 此上下文包含带外 (OOB) 包含 NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY 结构的可扩展交换机数据。

有关可扩展交换机转发上下文的详细信息,请参阅 Hyper-V 可扩展交换机转发上下文

扩展获取数组后,可以执行以下操作:

注意当扩展保留数据包NET_BUFFER_LIST结构的所有权时,NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY结构保证有效。
 

要求

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

另请参阅

AllocateNetBufferListForwardingContext

NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY

NDIS_SWITCH_PORT_DESTINATION

NET_BUFFER

NET_BUFFER_LIST

NdisFGetOptionalSwitchHandlers