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之前,必须遵循以下准则:
  • 只有转发扩展才能调用 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

另请参阅

GetNetBufferListDestinations

NDIS_SWITCH_PORT_DESTINATION

NET_BUFFER

NET_BUFFER_LIST

NdisFGetOptionalSwitchHandlers

UpdateNetBufferListDestinations