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) |