Partager via


NdisCoSendNetBufferLists, fonction (ndis.h)

La fonction NdisCoSendNetBufferLists envoie les données réseau contenues dans une liste spécifiée de structures NET_BUFFER_LIST .

Syntaxe

void NdisCoSendNetBufferLists(
  [in] NDIS_HANDLE      NdisVcHandle,
  [in] PNET_BUFFER_LIST NetBufferLists,
  [in] ULONG            SendFlags
);

Paramètres

[in] NdisVcHandle

Handle vers une connexion virtuelle (VC) qui identifie la cible de la demande d’envoi.

[in] NetBufferLists

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

Indicateurs qui définissent des attributs pour l’opération d’envoi. Les indicateurs peuvent être combinés avec une opération OR au niveau du bit. Pour effacer tous les indicateurs, définissez ce paramètre sur zéro. NdisCoSendNetBufferLists prend en charge les indicateurs suivants :

NDIS_SEND_FLAGS_DISPATCH_LEVEL

L’IRQL actuel est DISPATCH_LEVEL. Pour plus d’informations sur cet indicateur, consultez Dispatch IRQL Tracking.

NDIS_SEND_FLAGS_CHECK_FOR_LOOPBACK

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 NDIS_SEND_FLAGS_CHECK_FOR_LOOPBACK. 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’affecte pas la vérification du bouclage ou de la boucle arrière sur d’autres liaisons.

Valeur de retour

None

Remarques

Après qu’un pilote de protocole CoNDIS a appelé NdisCoSendNetBufferLists, NDIS envoie les structures NET_BUFFER_LIST que le paramètre NetBufferLists spécifie à un pilote sous-jacent Fonction MiniportCoSendNetBufferLists .

Le pilote de protocole doit allouer chaque structure NET_BUFFER_LIST à partir d’un pool en appelant l’une des fonctions suivantes :

Le pilote de protocole peut préallouer NET_BUFFER_LIST structures, par exemple, dans sa routine DriverEntry . Le pilote de protocole peut également allouer les structures immédiatement avant d’appeler NdisCoSendNetBufferLists , puis les libérer une fois l’opération d’envoi terminée. Quand NDIS retourne une structure NET_BUFFER_LIST à la Fonction ProtocolCoSendNetBufferListsComplete , le pilote de protocole peut préparer la structure NET_BUFFER_LIST et toutes les ressources associées pour la réutilisation. Si vous réutilisez les structures NET_BUFFER_LIST, vous pouvez obtenir de meilleures performances que le retour des structures dans un pool, puis leur réaffectation pour une autre opération d’envoi.

Un pilote de protocole doit définir le membre SourceHandle de chaque structure NET_BUFFER_LIST sur la même valeur qu’il passe au paramètre NdisVcHandle . Le handle source fournit les informations dont NDIS a besoin pour retourner la structure NET_BUFFER_LIST au pilote de protocole après que le pilote miniport sous-jacent a appelé le Fonction NdisMCoSendNetBufferListsComplete .

Avant qu’un pilote de protocole appelle NdisCoSendNetBufferLists, le pilote peut définir les informations qui accompagnent la demande d’envoi avec la macro NET_BUFFER_LIST_INFO . Le pilote sous-jacent peut récupérer ces informations avec la macro NET_BUFFER_LIST_INFO.

Avant qu’un pilote de protocole appelle NdisCoSendNetBufferLists avec une liste de structures NET_BUFFER_LIST, le pilote de protocole doit s’assurer que les structures NET_BUFFER_LIST sont configurées dans l’ordre d’envoi des données réseau.

Dès qu’un pilote de protocole appelle NdisCoSendNetBufferLists, il ne possède plus les structures NET_BUFFER_LIST et toutes les ressources associées. NDIS appelle la fonction ProtocolCoSendNetBufferListsComplete pour retourner les structures et les données au pilote de protocole. 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 à ProtocolCoSendNetBufferListsComplete.

Jusqu’à ce que NDIS appelle ProtocolCoSendNetBufferListsComplete, la status actuelle d’un envoi lancé par le pilote de protocole n’est pas disponible pour le pilote de protocole. Un pilote de protocole libère temporairement la propriété de toutes les ressources qu’il a allouées pour une demande d’envoi lorsqu’il appelle NdisCoSendNetBufferLists. Un pilote de protocole ne doit jamais tenter d’examiner les structures NET_BUFFER_LIST ou les données associées après que le pilote a appelé NdisCoSendNetBufferLists.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Pris en charge pour les pilotes NDIS 6.0 dans Windows Vista.
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_Connection_Function(ndis)

Voir aussi

DriverEntry

MiniportCoSendNetBufferLists

NET_BUFFER

NET_BUFFER_LIST

NET_BUFFER_LIST_INFO

NdisAllocateCloneNetBufferList NdisAllocateNetBufferAndNetBufferList

NdisAllocateNetBufferList

NdisMCoSendNetBufferListsComplete ProtocolCoSendNetBufferListsComplete