union NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO (ndis.h)

L’union NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO spécifie les informations permettant de transférer un paquet vers un ou plusieurs ports de commutateur extensible Hyper-V.

Ces informations sont contenues dans les données hors bande (OOB) de la structure NET_BUFFER_LIST du paquet.

Syntaxe

typedef union _NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO {
  UINT64 AsUINT64;
  struct {
    UINT32 NumAvailableDestinations : 16;
    UINT32 SourcePortId : 16;
    UINT32 SourceNicIndex : 8;
    UINT32 NativeForwardingRequired : 1;
#if ...
    UINT32 Reserved1 : 1;
#else
    UINT32 Reserved1 : 2;
#endif
    UINT32 IsPacketDataSafe : 1;
    UINT32 SafePacketDataSize : 12;
    UINT32 IsPacketDataUncached : 1;
    UINT32 IsSafePacketDataUncached : 1;
    UINT32 Reserved2 : 7;
  };
} NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO, *PNDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO;

Membres

AsUINT64

Valeur de NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO 64 bits complète.

NumAvailableDestinations

Valeur qui spécifie le nombre d’éléments de ports de destination de commutateur extensibles inutilisés au sein d’une structure de NET_BUFFER_LIST . Pour plus d'informations, consultez la section Notes.

SourcePortId

Identificateur du port de commutateur extensible source d’où provient le NET_BUFFER_LIST .

SourceNicIndex

Valeur UINT32 qui spécifie l’index de la carte réseau source connectée au port de commutateur extensible spécifié par le membre SourcePortId .

Pour plus d’informations sur cette valeur d’index, consultez Valeurs d’index de carte réseau.

NativeForwardingRequired

Si ce membre est défini sur TRUE, packet est un paquet NVGRE, et le composant Hyper-V Network Virtualization (HNV) du commutateur extensible Hyper-V transfère ce paquet. Pour plus d’informations, consultez Transfert hybride.

Cet indicateur ne doit être écrit dans aucune extension.

Note Cet indicateur est disponible uniquement dans NDIS 6.40 et versions ultérieures.

Reserved1

Ce membre est réservé à une utilisation future par NDIS.

Ce membre est réservé à une utilisation future par NDIS.

IsPacketDataSafe

Si ce membre a la valeur TRUE, toutes les données de paquet proviennent de la mémoire de l’hôte approuvée.

SafePacketDataSize

Valeur qui spécifie le nombre d’octets consécutifs dans les données de paquet qui se trouvent dans la mémoire de l’hôte approuvé. Cette valeur est en unités d’octets à partir du début des données de paquet. Le reste des données de paquet (le cas échéant) après la valeur SafePacketDataSize se trouve dans la mémoire partagée non approuvée accessible par les partitions enfants et parentes Hyper-V.

Pour plus d'informations, consultez la section Notes.

Note Ce membre est valide uniquement si le membre IsPacketDataSafe a la valeur FALSE.

IsPacketDataUncached

Si cet indicateur n’est pas défini, les données de paquet entières sont mises en cache. S’il est défini, une partie ou la totalité des données n’est pas mise en cache. Une fois la valeur définie, case activée le champ IsSafePacketDataUncached pour voir si au moins la partie SafePacketData est mise en cache.

IsSafePacketDataUncached

Si l’indicateur IsPacketDataUncached est défini, ce champ indique si la partie SafePacketData du paquet est mise en cache. Si c’est le cas, consultez le champ SafePacketDataSize pour connaître le nombre d’octets mis en cache.

Reserved2

Ce membre est réservé à une utilisation future par NDIS.

Remarques

Les extensions de commutateur extensible peuvent utiliser la macro NET_BUFFER_LIST_SWITCH_FORWARDING_DETAIL pour accéder à l’union NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO dans une structure de NET_BUFFER_LIST .

Le membre NumAvailableDestinations de l’union NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO spécifie le nombre d’éléments de port de destination de commutateur extensibles inutilisés au sein d’une structure de NET_BUFFER_LIST . Chaque port de destination de commutateur extensible est spécifié par un élément NDIS_SWITCH_PORT_DESTINATION dans la structure NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY d’une structure NET_BUFFER_LIST . L’extension de commutateur extensible appelle GetNetBufferListDestinations pour obtenir les NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY actuelles dans une structure de NET_BUFFER_LIST .

Le membre NativeForwardingRequired spécifie si le paquet est un paquet NVGRE ou non. S’il a la valeur TRUE, le paquet est un paquet NVGRE et l’extension de transfert ne détermine pas le tableau de ports de destination de transfert du paquet, bien qu’elle puisse ajouter ou exclure des ports de destination dans le tableau. Pour plus d’informations, consultez Transfert hybride.

L’indicateur IsPacketDataUncached peut aider les extensions de commutateur extensibles à déterminer si une partie ou la totalité des données de paquets sont mises en cache ou non. Si cet indicateur est défini, une partie ou la totalité des données n’est pas mise en cache, et l’indicateur IsSafePacketDataUncached indique à l’extension si la partie données de paquets sécurisés est mise en cache. Si les données de paquets sécurisés sont mises en cache, le membre SafePacketDataSize spécifie le nombre d’octets mis en cache.

SafePacketDataSize spécifie la taille des données de paquet qui se trouvent dans la mémoire locale ou approuvée dans le système d’exploitation parent de la partition parente Hyper-V. Cette mémoire n’est pas accessible par la partition enfant. Par conséquent, il est considéré comme « sécurisé » contre les mises à jour non synchronisées par le système d’exploitation invité qui s’exécute dans cette partition.

Si une extension de commutateur extensible nécessite plus d’espace approuvé pour inspecter les données de paquets, elle doit suivre les étapes suivantes :

  1. L’extension doit dupliquer la structure NET_BUFFER_LIST du paquet en allouant une structure NET_BUFFER_LIST et NET_BUFFER . L’extension appelle ensuite NdisCopyFromNetBufferToNetBuffer pour dupliquer la structure NET_BUFFER du paquet. Si cette fonction se termine correctement, les données du paquet sont copiées dans la mémoire approuvée.
  2. L’extension doit appeler CopyNetBufferListInfo pour copier les données OOB du paquet dans le paquet dupliqué.
  3. Une fois le paquet d’origine dupliqué, l’extension doit obtenir l’union NDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO dans le paquet dupliqué à l’aide de la macro NET_BUFFER_LIST_SWITCH_FORWARDING_DETAIL . L’extension doit définir le membre IsPacketDataSafe sur TRUE.
Pour plus d’informations sur la façon de dupliquer des paquets dans l’interface de commutateur extensible, consultez Trafic de paquets d’origine.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Pris en charge dans NDIS 6.30 et versions ultérieures.
En-tête ndis.h (inclure Ndis.h)

Voir aussi

Transfert d’extensions

Transfert de paquets vers des ports de commutateur extensible Hyper-V

Transfert de paquets vers des cartes réseau physiques

GetNetBufferListDestinations

Transfert hybride

NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY

NDIS_SWITCH_PORT_DESTINATION

NET_BUFFER_LIST

NET_BUFFER_LIST_SWITCH_FORWARDING_DETAIL

Vue d’ensemble du commutateur extensible Hyper-V