NDIS_SWITCH_GET_NET_BUFFER_LIST_SWITCH_CONTEXT fonction de rappel (ndis.h)

L’extension de commutateur extensible Hyper-V appelle la fonction GetNetBufferListSwitchContext pour récupérer le contexte de commutateur précédemment défini sur le NET_BUFFER_LIST.

Syntaxe

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
)
{...}

Paramètres

[in] NdisSwitchContext

Valeur NDIS_SWITCH_CONTEXT qui contient le handle du module de commutateur extensible auquel l’extension de commutateur extensible Hyper-V est attachée. Lorsque l’extension appelle NdisFGetOptionalSwitchHandlers, ce handle est retourné via le paramètre NdisSwitchContext .

[in] NetBufferList

Pointeur vers une structure de NET_BUFFER_LIST pour un paquet unique qui contient le contexte à récupérer.

Note Cette structure doit contenir un contexte de transfert de commutateur extensible. Si l’extension a créé ou cloné le paquet, elle doit avoir précédemment alloué cette structure en appelant la fonction AllocateNetBufferListForwardingContext.
 

[in] ContextType

Context

Type de contexte déclaré à l’aide du NDIS_DECLARE_SWITCH_NET_BUFFER_LIST_CONTEXT_TYPE utilisé lors de la définition du contexte.

Valeur retournée

NULL si aucun contexte n’a été trouvé dans le NET_BUFFER_LIST qui correspond au type de contexte spécifié. Sinon, un pointeur non NULL vers la mémoire tampon est retourné.

Remarques

Les API SetNetBufferListSwitchContext permettent aux extensions d’attacher un contexte à un NET_BUFFER_LIST lors de l’entrée et de le récupérer en sortie. Malgré cela, les extensions doivent être résilientes au contexte d’entrée qui n’est pas présent en sortie. Le contexte de commutateur n’est pas conservé lorsqu’un NET_BUFFER_LIST est cloné. Par conséquent, dans les scénarios où le NET_BUFFER_LIST est cloné entre l’entrée et la sortie, le NET_BUFFER_LIST n’aura pas le contexte de commutateur d’origine.

L’extension doit gérer la durée de vie du contexte. Une approche consiste à allouer NDIS NET_BUFFER_LIST contexte (à l’aide de NdisAllocateNetBufferListContext, ou préconfiguré si l’extension possède le pool NET_BUFFER_LIST) et d’utiliser setNetBufferListSwitchContext pour associer un identificateur de type de contexte au contexte NDIS NET_BUFFER_LIST. Une fois le NBL terminé, l’extension peut libérer le contexte NET_BUFFER_LIST NDIS (à l’aide de NdisFreeNetBufferListContext, ou de libérer le NET_BUFFER_LIST lui-même s’il a été créé par l’extension).

Pour plus d’informations sur le contexte de transfert de commutateur extensible, consultez Contexte de transfert de commutateur extensible Hyper-V.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Pris en charge dans NDIS 6.30 et versions ultérieures.
Plateforme cible Desktop (Expérience utilisateur)
En-tête ndis.h (inclure Ndis.h)
IRQL <= DISPATCH_LEVEL

Voir aussi

AllocateNetBufferListForwardingContext

GetNetBufferListDestinations

NDIS_SWITCH_PORT_DESTINATION

NET_BUFFER

NET_BUFFER_LIST

NdisFGetOptionalSwitchHandlers

NdisFOidRequest

SetNetBufferListSwitchContext