NDIS_SWITCH_COPY_NET_BUFFER_LIST_INFO fonction de rappel (ndis.h)

L’extension de commutateur extensible Hyper-V appelle la fonction CopyNetBufferListInfo pour copier le contexte de transfert hors bande (OOB) de la structure NET_BUFFER_LIST d’un paquet source vers la structure NET_BUFFER_LIST d’un paquet de destination. Ce contexte inclut le port source du commutateur extensible et les informations sur la carte réseau. Les informations de port de destination du commutateur extensible peuvent également être copiées.

Syntaxe

NDIS_SWITCH_COPY_NET_BUFFER_LIST_INFO NdisSwitchCopyNetBufferListInfo;

NDIS_STATUS NdisSwitchCopyNetBufferListInfo(
  [in]      NDIS_SWITCH_CONTEXT NdisSwitchContext,
  [in, out] PNET_BUFFER_LIST DestNetBufferList,
  [in]      PNET_BUFFER_LIST SrcNetBufferList,
  [in]      UINT32 Flags
)
{...}

Paramètres

[in] NdisSwitchContext

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

[in, out] DestNetBufferList

Pointeur vers une structure de NET_BUFFER_LIST pour le paquet de destination vers lequel le contexte de transfert de commutateur extensible est copié.

[in] SrcNetBufferList

Pointeur vers une structure de NET_BUFFER_LIST pour le paquet source à partir duquel le contexte de transfert de commutateur extensible est copié.

[in] Flags

Valeur UINT32. Lorsque l’indicateur NDIS_SWITCH_COPY_NBL_INFO_FLAGS_PRESERVE_DESTINATIONS est spécifié, la fonction copie les ports de destination du commutateur extensible du paquet source vers le paquet de destination.

Les données contenues dans l’union NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO du paquet source sont toujours copiées dans le contexte de transfert extensible du commutateur dans le paquet de destination. Ces données incluent les identificateurs de port source et l’index de la connexion de carte réseau d’où provient le paquet. Selon le nombre de ports de destination de commutateur extensible copiés dans le paquet de destination, le membre NumAvailableDestinations de l’union NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO est mis à jour dans le paquet de destination.

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

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 appelle la fonction CopyNetBufferListInfo pour copier les données OOB d’un paquet source vers un paquet de destination. Ces données comprennent les éléments suivants :

  • Données du tableau NetBufferListInfo de la structure NET_BUFFER_LIST du paquet source.
  • Le NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO données du contexte de transfert extensible du commutateur du paquet source.
  • Données pour les ports de destination du commutateur extensible à partir du contexte de transfert de commutateur extensible du paquet source.
    Note Ces données ne sont copiées que si l’indicateur NDIS_SWITCH_COPY_NBL_INFO_FLAGS_PRESERVE_DESTINATIONS est spécifié.
     
Avant que l’extension appelle CopyNetBufferListInfo, elle doit préparer la structure NET_BUFFER_LIST du paquet de destination en procédant comme suit :
  1. L’extension doit d’abord initialiser une structure NET_BUFFER_LIST pour le paquet de destination qui est dérivé de la structure NET_BUFFER_LIST du paquet source.

    Par exemple, l’extension peut appeler NdisAllocateCloneNetBufferList pour créer une copie complète du paquet source. L’extension peut également appeler NdisAllocateFragmentNetBufferList pour créer une copie d’un fragment du paquet source uniquement. Pour plus d’informations, consultez Structures NET_BUFFER_LIST dérivées.

  2. L’extension doit appeler la fonction AllocateNetBufferListForwardingContext pour allouer le contexte de transfert de commutateur extensible pour le paquet de destination. Ces données sont utilisées pour stocker les informations de transfert de commutateur extensible OOB, telles que les ports source et de destination d’un paquet.
Note Si l’extension crée ou clone le paquet source, l’extension doit avoir précédemment appelé la fonction AllocateNetBufferListForwardingContext pour le paquet. Les paquets sources que l’extension filtre via la pile de pilotes de commutateur extensible contiennent déjà un contexte de transfert de commutateur extensible alloué.
 

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

NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO

NET_BUFFER_LIST

NdisAllocateCloneNetBufferList

NdisAllocateFragmentNetBufferList

NdisFGetOptionalSwitchHandlers