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