Partager via


NDIS_SWITCH_ADD_NET_BUFFER_LIST_DESTINATION fonction de rappel (ndis.h)

La fonction AddNetBufferListDestination ajoute un port de destination unique pour un paquet spécifié par une structure NET_BUFFER_LIST .

Syntaxe

NDIS_SWITCH_ADD_NET_BUFFER_LIST_DESTINATION NdisSwitchAddNetBufferListDestination;

NDIS_STATUS NdisSwitchAddNetBufferListDestination(
  [in]      NDIS_SWITCH_CONTEXT NdisSwitchContext,
  [in, out] PNET_BUFFER_LIST NetBufferList,
  [in]      PNDIS_SWITCH_PORT_DESTINATION Destination
)
{...}

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 structure NET_BUFFER_LIST pour un paquet.

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] Destination

Pointeur vers une structure NDIS_SWITCH_PORT_DESTINATION . Cette structure spécifie le port de commutateur extensible de destination vers lequel le paquet sera transféré.

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 de transfert appelle AddNetBufferListDestination pour définir un port de destination de commutateur extensible unique pour un paquet. L’extension spécifie ce port en initialisant une structure NDIS_SWITCH_PORT_DESTINATION . L’extension définit le paramètre Destination sur un pointeur vers cette structure. Pour plus d’informations sur la spécification d’un port de destination de commutateur extensible, consultez Gestion des données de port de destination du commutateur extensible Hyper-V.

Note Pour des raisons de performances, l’extension ne doit pas appeler les paquets AddNetBufferListDestination avec plusieurs ports de destination.
 
L’extension doit suivre ces instructions avant d’appeler AddNetBufferListDestination :
  • Seules les extensions de transfert peuvent appeler AddNetBufferListDestination pour ajouter un port de destination pour un paquet. Pour plus d’informations sur ce type d’extension, consultez Transfert d’extensions.
  • Si l’extension de transfert est à l’origine d’un paquet avec un port de destination, l’extension doit d’abord appeler la fonction AllocateNetBufferListForwardingContext . Cette fonction alloue le contexte de transfert de commutateur extensible pour le paquet. Ces données contiennent les ports source et de destination du commutateur extensible dans les informations OOB (out-of-band) du paquet.

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

  • Une fois que l’extension a modifié les informations de port de destination dans la structure NDIS_SWITCH_PORT_DESTINATION , elle appelle AddNetBufferListDestination pour valider les modifications apportées à la structure NET_BUFFER_LIST pour le paquet.
    Note Pour des raisons de performances, l’extension ne doit pas appeler la fonction UpdateNetBufferListDestinations pour valider les modifications pour le paquet.
     
Note Une fois que l’extension de transfert a validé les modifications des ports de destination dans le contexte de transfert, les ports de destination ne peuvent pas être supprimés et seul le membre IsExcluded de la structure NDIS_SWITCH_PORT_DESTINATION d’un port de destination peut être modifié. Pour plus d’informations, consultez Exclusion de la distribution de paquets vers les ports de destination du commutateur extensible.
 

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

GetNetBufferListDestinations

NDIS_SWITCH_PORT_DESTINATION

NET_BUFFER

NET_BUFFER_LIST

NdisFGetOptionalSwitchHandlers

UpdateNetBufferListDestinations