NDIS_SWITCH_GET_NET_BUFFER_LIST_SWITCH_CONTEXT回调函数 (ndis.h)

Hyper-V 可扩展交换机扩展调用 GetNetBufferListSwitchContext 函数,以检索以前在 NET_BUFFER_LIST上设置的交换机上下文。

语法

NDIS_SWITCH_GET_NET_BUFFER_LIST_SWITCH_CONTEXT NdisSwitchGetNetBufferListSwitchContext;

PVOID NdisSwitchGetNetBufferListSwitchContext(
  [in] NDIS_SWITCH_CONTEXT NdisSwitchContext,
  [in] PNET_BUFFER_LIST NetBufferList,
  [in] PNDIS_SWITCH_NET_BUFFER_LIST_CONTEXT_TYPE ContextType
)
{...}

参数

[in] NdisSwitchContext

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

[in] NetBufferList

指向包含要检索的上下文的单个数据包 的NET_BUFFER_LIST 结构的指针。

注意 此结构必须包含可扩展的交换机转发上下文。 如果扩展创建或克隆了数据包,则它之前必须通过调用 AllocateNetBufferListForwardingContext 函数来分配此结构。
 

[in] ContextType

上下文

使用设置上下文时使用的 NDIS_DECLARE_SWITCH_NET_BUFFER_LIST_CONTEXT_TYPE 声明的上下文类型。

返回值

如果在与指定上下文类型匹配 的NET_BUFFER_LIST 中找不到上下文,则为 NULL。 否则,返回指向缓冲区的非 NULL 指针。

注解

SetNetBufferListSwitchContext API 允许扩展将上下文附加到入口上的NET_BUFFER_LIST,并在出口时检索上下文。 即便如此,扩展应可复原到出口中不存在的入口上下文。 克隆NET_BUFFER_LIST时,不会保留开关上下文,因此在入口和出口之间克隆NET_BUFFER_LIST的情况下,NET_BUFFER_LIST将没有原始的开关上下文。

扩展必须管理上下文的生存期。 一种方法是使用 NdisAllocateNetBufferListContext 分配 NDIS NET_BUFFER_LIST上下文 (;如果扩展拥有NET_BUFFER_LIST池) ,则分配 NDIS,并使用 SetNetBufferListSwitchContext 将上下文类型标识符与 NDIS NET_BUFFER_LIST上下文相关联。 NBL 完成后,扩展可以使用 NdisFreeNetBufferListContext 释放 NDIS NET_BUFFER_LIST上下文 (,或者释放NET_BUFFER_LIST本身(如果它是由扩展) 发起的)。

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

要求

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

另请参阅

AllocateNetBufferListForwardingContext

GetNetBufferListDestinations

NDIS_SWITCH_PORT_DESTINATION

NET_BUFFER

NET_BUFFER_LIST

NdisFGetOptionalSwitchHandlers

NdisFOidRequest

SetNetBufferListSwitchContext