NDIS_SWITCH_ALLOCATE_NET_BUFFER_LIST_FORWARDING_CONTEXT回调函数 (ndis.h)
AllocateNetBufferListForwardingContext 函数为可扩展交换机中的发送或接收操作准备NET_BUFFER_LIST结构。
语法
NDIS_SWITCH_ALLOCATE_NET_BUFFER_LIST_FORWARDING_CONTEXT NdisSwitchAllocateNetBufferListForwardingContext;
NDIS_STATUS NdisSwitchAllocateNetBufferListForwardingContext(
[in] NDIS_SWITCH_CONTEXT NdisSwitchContext,
[in, out] PNET_BUFFER_LIST NetBufferList
)
{...}
参数
[in] NdisSwitchContext
一个NDIS_SWITCH_CONTEXT值,该值包含 Hyper-V 可扩展交换机扩展所附加到的可扩展交换机模块的句柄。 当扩展调用 NdisFGetOptionalSwitchHandlers 时,将通过 NdisSwitchContext 参数返回此句柄。
[in, out] NetBufferList
指向 NET_BUFFER_LIST 结构链接列表的指针。
返回值
如果调用成功,函数将返回NDIS_STATUS_SUCCESS。 否则,它将返回在 Ndis.h 中定义的 NDIS_STATUS_Xxx 错误代码。
注解
可扩展交换机扩展可以在可扩展交换机数据路径中引发数据包发送操作。 例如,扩展可以将数据包发送到可扩展交换机上的任何端口。 有关此数据路径的详细信息,请参阅 Hyper-V 可扩展交换机数据路径。
在扩展调用 NdisAllocateNetBufferList 或 NdisAllocateCloneNetBufferList 从其 NET_BUFFER_LIST 池创建或克隆数据包后,扩展必须调用 AllocateNetBufferListForwardingContext 函数。 此函数 为指定的NET_BUFFER_LIST 结构分配和初始化带外 (OOB) 可扩展交换机转发上下文。 有关此上下文的详细信息,请参阅 Hyper-V 可扩展交换机转发上下文。
扩展必须遵循以下准则,以便通过 AllocateNetBufferListForwardingContext 函数分配转发上下文:
-
扩展调用 NdisAllocateNetBufferList ,以分配扩展 NET_BUFFER_LIST 池中的数据包,以便通过可扩展交换机执行发送或接收操作。 在扩展初始化数据包的源和目标端口之前,它必须调用 AllocateNetBufferListForwardingContext。
有关如何指定源和目标可扩展交换机端口的详细信息,请参阅 管理 Hyper-V 可扩展交换机源和目标端口数据。
- 在扩展调用 AllocateNetBufferListForwardingContext 之前,它必须将每个分配NET_BUFFER_LIST结构的 SourceHandle 成员设置为标识扩展的句柄值。 当 NDIS 调用扩展的 FilterAttach 函数时,扩展通过 NdisFilterHandle 参数接收此句柄。
- 发送操作完成后,扩展必须调用 FreeNetBufferListForwardingContext 函数来解除分配转发上下文的资源。 扩展必须先调用此函数,然后才能调用 NdisFreeNetBufferList ,以便将数据包返回到其 NET_BUFFER_LIST 池。
- 如果扩展正在克隆数据包,则必须调用 CopyNetBufferListInfo ,以将转发上下文从原始数据包复制到克隆的数据包。 扩展必须在调用 AllocateNetBufferListForwardingContext 后执行此操作。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 在 NDIS 6.30 及更高版本中受支持。 |
目标平台 | 桌面 |
标头 | ndis.h (包括 Ndis.h) |
IRQL | <= DISPATCH_LEVEL |
另请参阅
FreeNetBufferListForwardingContext
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈