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 结构链接列表的指针。
[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 函数,然后才能调用 GetNetBufferListDestinations。 AllocateNetBufferListForwardingContext 函数为数据包分配可扩展的交换机转发上下文。 此上下文包含带外 (OOB) 包含 NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY 结构的可扩展交换机数据。
有关可扩展交换机转发上下文的详细信息,请参阅 Hyper-V 可扩展交换机转发上下文。
扩展获取数组后,可以执行以下操作:
-
为数组中的其他 NDIS_SWITCH_PORT_DESTINATION 元素分配空间。
有关详细信息,请参阅 将可扩展交换机目标端口数据添加到数据包。
-
修改数组 NDIS_SWITCH_PORT_DESTINATION 元素中的目标端口信息。 例如,扩展可以指定要将数据包转发到哪个端口,也可以排除数据包转发到指定端口。
有关详细信息,请参阅 修改数据包的可扩展交换机源端口数据。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 在 NDIS 6.30 及更高版本中受支持。 |
目标平台 | 桌面 |
标头 | ndis.h (包括 Ndis.h) |
IRQL | <= DISPATCH_LEVEL |
另请参阅
AllocateNetBufferListForwardingContext