NdisCoSendNetBufferLists, fonction (ndis.h)
La fonction NdisCoSendNetBufferLists envoie des 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
Le runtime d’intégration actuel est DISPATCH_LEVEL. Pour plus d’informations sur cet indicateur, consultez Dispatch IRQL Tracking.
NDIS_SEND_FLAGS_CHECK_FOR_LOOPBACK
NDIS doit vérifier la bouclage. Par défaut, NDIS ne boucle pas les données vers le pilote qui a envoyé la demande d’envoi. Un pilote overlying 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 overlying. Cet indicateur n’affecte pas la vérification du bouclage ou de la bouclage sur d’autres liaisons.
Valeur de retour
Aucun
Remarques
Après qu’un pilote de protocole CoNDIS appelle NdisCoSendNetBufferLists, NDIS envoie les structures NET_BUFFER_LIST que le paramètre NetBufferLists spécifie à un pilote sous-jacent MiniportCoSendNetBufferLists fonction.
Le pilote de protocole doit allouer chaque structure de 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 lorsque l’opération d’envoi est terminée. Quand NDIS retourne une structure NET_BUFFER_LIST à la ProtocolCoSendNetBufferListsComplete fonction, le pilote de protocole peut préparer la structure NET_BUFFER_LIST et toutes les ressources associées à réutiliser. Si vous réutilisez les structures NET_BUFFER_LIST, vous pouvez obtenir de meilleures performances que de retourner les structures dans un pool, puis les réallouer pour une autre opération d’envoi.Un pilote de protocole doit définir le membre SourceHandle de chaque structure de NET_BUFFER_LIST sur la même valeur qu’elle transmet au paramètre NdisVcHandle. Le handle source fournit les informations requises par NDIS pour renvoyer la structure NET_BUFFER_LIST au pilote de protocole après l’appel du pilote miniport sous-jacent fonction NdisMCoSendNetBufferListsComplete.
Avant qu’un pilote de protocole appelle NdisCoSendNetBufferLists, le pilote peut définir des 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 dans lequel les données réseau doivent être envoyées.
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 renvoyer les structures et les données au pilote de protocole. NDIS peut collecter les structures et les données de plusieurs requêtes d’envoi dans une liste liée unique de structures NET_BUFFER_LIST avant de passer la liste à ProtocolCoSendNetBufferListsComplete.
Tant que NDIS n’appelle ProtocolCoSendNetBufferListsComplete, l’état actuel d’un envoi initié 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 l’appel du pilote NdisCoSendNetBufferLists.