NDIS_SWITCH_COPY_NET_BUFFER_LIST_INFO回调函数 (ndis.h)

Hyper-V 可扩展交换机扩展调用 CopyNetBufferListInfo 函数,将带外 (OOB) 转发上下文从源数据包的 NET_BUFFER_LIST 结构复制到目标数据包的 NET_BUFFER_LIST 结构。 此上下文包括可扩展交换机源端口和网络适配器信息。 还可以复制可扩展交换机目标端口信息。

语法

NDIS_SWITCH_COPY_NET_BUFFER_LIST_INFO NdisSwitchCopyNetBufferListInfo;

NDIS_STATUS NdisSwitchCopyNetBufferListInfo(
  [in]      NDIS_SWITCH_CONTEXT NdisSwitchContext,
  [in, out] PNET_BUFFER_LIST DestNetBufferList,
  [in]      PNET_BUFFER_LIST SrcNetBufferList,
  [in]      UINT32 Flags
)
{...}

参数

[in] NdisSwitchContext

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

[in, out] DestNetBufferList

指向可扩展交换机转发上下文复制到的目标数据包 NET_BUFFER_LIST 结构的指针。

[in] SrcNetBufferList

指向从中复制可扩展交换机转发上下文的源数据包的 NET_BUFFER_LIST 结构的指针。

[in] Flags

UINT32 值。 指定NDIS_SWITCH_COPY_NBL_INFO_FLAGS_PRESERVE_DESTINATIONS标志后,函数会将可扩展交换机目标端口从源数据包复制到目标数据包。

源数据包 NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO 联合中包含的数据始终复制到目标数据包中的可扩展交换机转发上下文。 此数据包括数据包源自的网络适配器连接的源端口标识符和索引。 根据复制到目标数据包的可扩展交换机目标端口的数量, NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO 联合的 NumAvailableDestinations 成员在目标数据包中更新。

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

返回值

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

注解

可扩展交换机扩展调用 CopyNetBufferListInfo 函数,将 OOB 数据从源数据包复制到目标数据包。 此数据包括以下内容:

  • 源数据包NET_BUFFER_LIST结构的NetBufferListInfo 数组中的数据。
  • NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO源数据包的可扩展交换机转发上下文中的数据。
  • 源数据包的可扩展交换机转发上下文中可扩展交换机目标端口的数据。
    注意 仅当指定了NDIS_SWITCH_COPY_NBL_INFO_FLAGS_PRESERVE_DESTINATIONS标志时,才会复制此数据。
     
在扩展调用 CopyNetBufferListInfo 之前,它必须按照以下步骤准备目标数据包的 NET_BUFFER_LIST 结构:
  1. 该扩展必须首先为派生自源数据包 NET_BUFFER_LIST 结构的目标数据包初始化 NET_BUFFER_LIST 结构。

    例如,扩展可以调用 NdisAllocateCloneNetBufferList 来创建源数据包的完整副本。 该扩展还可以调用 NdisAllocateFragmentNetBufferList ,以仅创建源数据包片段的副本。 有关详细信息,请参阅 派生NET_BUFFER_LIST结构

  2. 该扩展必须调用 AllocateNetBufferListForwardingContext 函数,以便为目标数据包分配可扩展的交换机转发上下文。 此数据用于存储 OOB 可扩展交换机转发信息,例如数据包的源和目标端口。
注意 如果扩展正在创建或克隆源数据包,则扩展之前必须为数据包调用 AllocateNetBufferListForwardingContext 函数。 扩展通过可扩展交换机驱动程序堆栈筛选的源数据包已包含分配的可扩展交换机转发上下文。
 

要求

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

另请参阅

AllocateNetBufferListForwardingContext

NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO

NET_BUFFER_LIST

NdisAllocateCloneNetBufferList

NdisAllocateFragmentNetBufferList

NdisFGetOptionalSwitchHandlers