Partager via


NDIS_SWITCH_UPDATE_NET_BUFFER_LIST_DESTINATIONS fonction de rappel (ndis.h)

L’extension de commutateur extensible Hyper-V appelle la fonction UpdateNetBufferListDestinations pour valider les modifications apportées par l’extension à un paquet qui contient plusieurs ports de destination de commutateur extensibles. La fonction enregistre ces modifications dans le contexte de transfert de commutateur extensible hors bande (OOB) de la structure NET_BUFFER_LIST du paquet.

Syntaxe

NDIS_SWITCH_UPDATE_NET_BUFFER_LIST_DESTINATIONS NdisSwitchUpdateNetBufferListDestinations;

NDIS_STATUS NdisSwitchUpdateNetBufferListDestinations(
  [in]      NDIS_SWITCH_CONTEXT NdisSwitchContext,
  [in, out] PNET_BUFFER_LIST NetBufferList,
  [in]      UINT32 NumberOfNewDestinations,
  [in]      PNDIS_SWITCH_FORWARDING_DESTINATION_ARRAY Destinations
)
{...}

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, out] NetBufferList

Pointeur vers une structure NET_BUFFER_LIST pour un paquet unique.

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

Valeur UINT32 qui spécifie le nombre de nouveaux ports de destination ajoutés au paquet.

[in] Destinations

Pointeur vers une structure NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY . Cette structure spécifie les ports de destination du commutateur extensible du paquet.

Note L’extension a reçu cette structure lors d’un appel précédent à la fonction GetNetBufferListDestinations .
 

Valeur retournée

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

Remarques

L’extension de commutateur extensible appelle la fonction GetNetBufferListDestinations pour obtenir un tableau des ports de destination du commutateur extensible pour un paquet. Si la fonction retourne correctement, le tableau est obtenu via le paramètre Destinations , qui contient un pointeur vers une structure NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY . Chaque élément de ce tableau est mis en forme en tant que structure NDIS_SWITCH_PORT_DESTINATION qui spécifie un port de destination pour le paquet.

Une fois que l’extension a obtenu la structure NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY , l’extension peut effectuer les opérations suivantes :

Si l’extension ajoute ou modifie des ports de destination dans la structure NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY , l’extension doit appeler la fonction UpdateNetBufferListDestinations pour valider ces modifications dans la structure NET_BUFFER_LIST du paquet.
Note Seules les extensions de transfert peuvent appeler UpdateNetBufferListDestinations pour valider les ports de destination qui ont été ajoutés ou modifiés pour les paquets avec plusieurs ports de destination. Pour plus d’informations sur ce type d’extension, consultez Transfert d’extensions.
 
Si l’appel à UpdateNetBufferListDestinations retourne NDIS_STATUS_SUCCESS, l’interface de commutateur extensible garantit que le port de commutateur extensible et la connexion de carte réseau référencés dans les ports de destination ne seront pas supprimés tant que l’opération d’envoi ou de réception du paquet n’est pas terminée.

En outre, une fois les modifications apportées aux ports de destination validées, 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 remise de paquets aux ports de destination du commutateur extensible.

Note Pour des raisons de performances, l’extension ne doit pas appeler la fonction UpdateNetBufferListDestinations pour valider les modifications apportées à un paquet avec un seul port de destination. Au lieu de cela, l’extension appelle AddNetBufferListDestination pour valider les modifications apportées au port de destination du paquet.
 
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

OID_SWITCH_NIC_DELETE