Partager via


NDIS_SWITCH_ALLOCATE_NET_BUFFER_LIST_FORWARDING_CONTEXT fonction de rappel (ndis.h)

La fonction AllocateNetBufferListForwardingContext prépare une structure NET_BUFFER_LIST pour les opérations d’envoi ou de réception au sein du commutateur extensible.

Syntaxe

NDIS_SWITCH_ALLOCATE_NET_BUFFER_LIST_FORWARDING_CONTEXT NdisSwitchAllocateNetBufferListForwardingContext;

NDIS_STATUS NdisSwitchAllocateNetBufferListForwardingContext(
  [in]      NDIS_SWITCH_CONTEXT NdisSwitchContext,
  [in, out] PNET_BUFFER_LIST NetBufferList
)
{...}

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é par le biais du paramètre NdisSwitchContext .

[in, out] NetBufferList

Pointeur vers une liste liée de structures NET_BUFFER_LIST .

Valeur retournée

Si l’appel réussit, la fonction retourne NDIS_STATUS_SUCCESS. Sinon, elle retourne un code d’erreur NDIS_STATUS_Xxx défini dans Ndis.h.

Remarques

L’extension de commutateur extensible peut provenir d’opérations d’envoi de paquets dans le chemin de données du commutateur extensible. Par exemple, l’extension peut envoyer des paquets à n’importe quel port sur le commutateur extensible. Pour plus d’informations sur ce chemin de données, consultez Chemin des données de commutateur extensible Hyper-V.

Une fois que l’extension a appelé NdisAllocateNetBufferList ou NdisAllocateCloneNetBufferList pour créer ou cloner un paquet à partir de son pool de NET_BUFFER_LIST , l’extension doit appeler la fonction AllocateNetBufferListForwardingContext . Cette fonction alloue et initialise le contexte de transfert de commutateur extensible hors bande (OOB) pour la structure de NET_BUFFER_LIST spécifiée. Pour plus d’informations sur ce contexte, consultez Contexte de transfert de commutateur extensible Hyper-V.

L’extension doit suivre ces instructions pour allouer le contexte de transfert via la fonction AllocateNetBufferListForwardingContext :

  • L’extension appelle NdisAllocateNetBufferList pour allouer un paquet du pool de NET_BUFFER_LIST de l’extension pour une opération d’envoi ou de réception sur le commutateur extensible. Avant que l’extension initialise les ports source et de destination du paquet, elle doit appeler AllocateNetBufferListForwardingContext.

    Pour plus d’informations sur la spécification des ports de commutateur extensible source et de destination, consultez Gestion des données de source et de port de destination du commutateur extensible Hyper-V.

  • Avant que l’extension appelle AllocateNetBufferListForwardingContext, elle doit définir le membre SourceHandle de chaque structure de NET_BUFFER_LIST allouée sur la valeur de handle qui identifie l’extension. L’extension reçoit ce handle via le paramètre NdisFilterHandle quand NDIS appelle la fonction FilterAttach de l’extension.
  • Une fois l’opération d’envoi terminée, l’extension doit appeler la fonction FreeNetBufferListForwardingContext pour libérer les ressources du contexte de transfert. L’extension doit appeler cette fonction avant d’appeler NdisFreeNetBufferList pour retourner le paquet à son pool de NET_BUFFER_LIST .
  • Si l’extension clone un paquet, elle doit appeler CopyNetBufferListInfo pour copier le contexte de transfert du paquet d’origine vers le paquet cloné. L’extension doit le faire après avoir appelé AllocateNetBufferListForwardingContext.
Pour plus d’informations sur la façon de créer des opérations d’envoi, consultez Filtrer les opérations d’envoi et de réception des modules.
Note Si le paramètre NetBufferList contient un pointeur vers une liste liée de plusieurs structures NET_BUFFER_LIST , un contexte de transfert est alloué uniquement à la première structure NET_BUFFER_LIST de la liste.
 

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

CopyNetBufferListInfo

FilterAttach

FreeNetBufferListForwardingContext

NET_BUFFER

NET_BUFFER_LIST

NdisAllocateNetBufferList

NdisFGetOptionalSwitchHandlers

NdisFreeNetBufferList