NDIS_SWITCH_ADD_NET_BUFFER_LIST_DESTINATION回调函数 (ndis.h)
AddNetBufferListDestination 函数为NET_BUFFER_LIST结构指定的数据包添加单个目标端口。
语法
NDIS_SWITCH_ADD_NET_BUFFER_LIST_DESTINATION NdisSwitchAddNetBufferListDestination;
NDIS_STATUS NdisSwitchAddNetBufferListDestination(
[in] NDIS_SWITCH_CONTEXT NdisSwitchContext,
[in, out] PNET_BUFFER_LIST NetBufferList,
[in] PNDIS_SWITCH_PORT_DESTINATION Destination
)
{...}
参数
[in] NdisSwitchContext
一个 NDIS_SWITCH_CONTEXT 值,该值包含 Hyper-V 可扩展交换机扩展所附加到的可扩展交换机模块的句柄。 当扩展调用 NdisFGetOptionalSwitchHandlers 时,此句柄通过 NdisSwitchContext 参数返回。
[in, out] NetBufferList
指向数据包 NET_BUFFER_LIST 结构的指针。
注意 此结构必须包含可扩展的交换机转发上下文。 如果扩展创建或克隆了数据包,则它之前必须通过调用 AllocateNetBufferListForwardingContext 函数分配此结构。
[in] Destination
指向 NDIS_SWITCH_PORT_DESTINATION 结构的指针。 此结构指定数据包将转发到的目标可扩展交换机端口。
返回值
如果调用成功,该函数将返回NDIS_STATUS_SUCCESS。 否则,它将返回在 Ndis.h 中定义的 NDIS_STATUS_Xxx 错误代码。
注解
转发可扩展交换机扩展调用 AddNetBufferListDestination 为数据包定义单个可扩展交换机目标端口。 扩展通过初始化 NDIS_SWITCH_PORT_DESTINATION 结构来指定此端口。 扩展将 Destination 参数设置为指向此结构的指针。 有关如何指定可扩展交换机目标端口的详细信息,请参阅 管理 Hyper-V 可扩展交换机目标端口数据。
注意 出于性能原因,扩展不应调用具有多个目标端口的 AddNetBufferListDestination 数据包。
- 只有转发扩展可以调用 AddNetBufferListDestination 来添加数据包的目标端口。 有关此类扩展的详细信息,请参阅 转发扩展。
-
如果转发扩展源自具有一个目标端口的数据包,则扩展必须首先调用 AllocateNetBufferListForwardingContext 函数。 此函数为数据包分配可扩展的交换机转发上下文。 此数据包含带外 (OOB) 数据包信息的可扩展交换机源和目标端口。
有关此上下文的详细信息,请参阅 Hyper-V 可扩展交换机转发上下文。
-
扩展修改 NDIS_SWITCH_PORT_DESTINATION 结构中的目标端口信息后,会调用 AddNetBufferListDestination 以将更改提交到数据包 的 NET_BUFFER_LIST 结构。
注意 出于性能原因,扩展不应调用 UpdateNetBufferListDestinations 函数来提交数据包的更改。
注意转发扩展将目标端口的更改提交到转发上下文后,无法删除目标端口,并且只能更改目标端口NDIS_SWITCH_PORT_DESTINATION结构的 IsExcluded 成员。 有关详细信息,请参阅 排除到可扩展交换机目标端口的数据包传递。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 在 NDIS 6.30 及更高版本中受支持。 |
目标平台 | 桌面 |
标头 | ndis.h (包括 Ndis.h) |
IRQL | <= DISPATCH_LEVEL |
另请参阅