Partager via


NdisFSendNetBufferLists, fonction (ndis.h)

Les pilotes de filtre appellent la fonction NdisFSendNetBufferLists pour envoyer une liste de mémoires tampons de données réseau.

Syntaxe

void NdisFSendNetBufferLists(
  [in] NDIS_HANDLE                       NdisFilterHandle,
       __drv_aliasesMem PNET_BUFFER_LIST NetBufferList,
  [in] NDIS_PORT_NUMBER                  PortNumber,
  [in] ULONG                             SendFlags
);

Paramètres

[in] NdisFilterHandle

Handle NDIS qui identifie ce module de filtre. NDIS a passé le handle au pilote de filtre dans un appel à la fonction FilterAttach .

NetBufferList

Pointeur vers une liste liée de structures NET_BUFFER_LIST . Chaque structure NET_BUFFER_LIST décrit une liste de structures NET_BUFFER .

[in] PortNumber

Numéro de port qui identifie un port d’adaptateur miniport. Les numéros de port de l’adaptateur miniport sont attribués en appelant la fonction NdisMAllocatePort . Une valeur zéro identifie le port par défaut d’un adaptateur miniport.

[in] SendFlags

Indicateurs qui définissent des attributs pour l’opération d’envoi. Les indicateurs peuvent être combinés avec une opération OR. Pour effacer tous les indicateurs, définissez ce membre sur zéro. Cette fonction prend en charge les indicateurs suivants :

NDIS_SEND_FLAGS_DISPATCH_LEVEL

Spécifie que l’IRQL actuel est DISPATCH_LEVEL. Pour plus d’informations sur cet indicateur, consultez Dispatch IRQL Tracking.

NDIS_SEND_FLAGS_CHECK_FOR_LOOPBACK

Spécifie que NDIS doit case activée pour le bouclage. Par défaut, NDIS n’effectue pas de bouclage des données vers le pilote qui a envoyé la demande d’envoi. Un pilote qui se superpose peut remplacer ce comportement en définissant cet indicateur. Lorsque cet indicateur est défini, NDIS identifie toutes les structures NET_BUFFER qui contiennent des données qui correspondent aux critères de réception de la liaison. NDIS indique NET_BUFFER structures qui correspondent aux critères du pilote qui se superpose. Cet indicateur n’a aucun impact sur la vérification du bouclage ou de la boucle arrière sur d’autres liaisons.

NDIS_SEND_FLAGS_SWITCH_SINGLE_SOURCE

Si cet indicateur est défini, tous les paquets d’une liste liée de structures NET_BUFFER_LIST proviennent du même port source de commutateur extensible Hyper-V.

Pour plus d’informations, consultez Indicateurs d’envoi et de réception du commutateur extensible Hyper-V.

Note Si chaque paquet de la liste liée de structures NET_BUFFER_LIST utilise le même port source, l’extension doit définir l’indicateur NDIS_SEND_COMPLETE_FLAGS_SWITCH_SINGLE_SOURCE dans le paramètre SendCompleteFlags de NdisFSendNetBufferListsComplete lorsqu’elle termine la demande d’envoi.
 
Note Cet indicateur est disponible dans NDIS 6.30 et versions ultérieures.
 

NDIS_SEND_FLAGS_SWITCH_DESTINATION_GROUP

Si cet indicateur est défini, tous les paquets d’une liste liée de structures NET_BUFFER_LIST doivent être transférés vers le même port de destination de commutateur extensible.

Pour plus d’informations, consultez Indicateurs d’envoi et de réception du commutateur extensible Hyper-V.

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

Valeur de retour

None

Remarques

Après qu’un pilote de filtre a appelé la fonction NdisFSendNetBufferLists , NDIS envoie les structures NET_BUFFER_LIST aux pilotes sous-jacents.

Un pilote de filtre peut être à l’origine de l’envoi de demandes ou il peut filtrer les demandes qu’il reçoit de pilotes qui sur-mentent. Si le pilote de filtre provient des requêtes d’envoi, le pilote doit allouer des pools de mémoires tampons. Le pilote de filtre alloue chaque structure NET_BUFFER_LIST à partir d’un pool.

Le pilote de filtre peut préallouer NET_BUFFER_LIST structures ou allouer les structures juste avant d’appeler NdisFSendNetBufferLists , puis les libérer une fois l’opération d’envoi terminée.

Un pilote de filtre doit définir le membre SourceHandle de chaque structure NET_BUFFER_LIST qu’il provient de la même valeur que celle qu’il transmet au paramètre NdisFilterHandle . Le handle de filtre fournit les informations dont NDIS a besoin pour retourner la structure NET_BUFFER_LIST au pilote de filtre. Le pilote de filtre ne doit pas modifier le membre SourceHandle dans les structures NET_BUFFER_LIST dont il n’est pas issu.

Avant d’appeler NdisFSendNetBufferLists, un pilote de filtre peut définir des informations qui accompagnent la demande d’envoi avec la macro NET_BUFFER_LIST_INFO . Les pilotes sous-jacents peuvent récupérer ces informations avec la macro NET_BUFFER_LIST_INFO .

NDIS appelle un pilote de filtre La fonction FilterSendNetBufferLists permet de transmettre des demandes d’envoi provenant de pilotes sur-mentants. Un pilote de filtre peut transmettre ces requêtes en transmettant les structures NET_BUFFER_LISTT qu’il a reçues dans FilterSendNetBufferLists à NdisFSendNetBufferLists.

Dès qu’un pilote de filtre appelle la fonction NdisFSendNetBufferLists , il abandonne la propriété des structures NET_BUFFER_LIST et de toutes les ressources associées. NDIS appelle le Fonction FilterSendNetBufferListsComplete pour retourner les structures et les données au pilote de filtre. NDIS peut collecter les structures et les données de plusieurs demandes d’envoi dans une seule liste liée de structures NET_BUFFER_LIST avant de transmettre la liste à FilterSendNetBufferListsComplete.

Jusqu’à ce que NDIS appelle FilterSendNetBufferListsComplete, le status actuel de la demande d’envoi n’est pas disponible pour le pilote de filtre. Un pilote de filtre libère temporairement la propriété de toutes les ressources associées à une demande d’envoi lorsqu’il appelle NdisFSendNetBufferLists. Un pilote de filtre ne doit jamais essayer d’examiner les structures NET_BUFFER_LIST ou les données associées après avoir appelé NdisFSendNetBufferLists.

Note Un pilote de filtre doit effectuer le suivi des demandes d’envoi dont il provient et s’assurer qu’il n’appelle pas le Fonction NdisFSendNetBufferListsComplete lorsque ces demandes sont terminées.
 

Configuration requise

Condition requise Valeur
Client minimal pris en charge Pris en charge dans NDIS 6.0 et versions ultérieures.
Plateforme cible Desktop (Expérience utilisateur)
En-tête ndis.h (inclure Ndis.h)
Bibliothèque Ndis.lib
IRQL <= DISPATCH_LEVEL
Règles de conformité DDI Irql_Filter_Driver_Function(ndis)

Voir aussi

FilterAttach

FilterSendNetBufferLists

FilterSendNetBufferListsComplete

NET_BUFFER

NET_BUFFER_LIST

NET_BUFFER_LIST_INFO

NdisMAllocatePort