NdisSendNetBufferLists, fonction (ndis.h)
Les pilotes de protocole appellent la fonction NdisSendNetBufferLists pour envoyer des données réseau contenues dans une liste de structures NET_BUFFER_LIST.
Syntaxe
void NdisSendNetBufferLists(
[in] NDIS_HANDLE NdisBindingHandle,
[in] __drv_aliasesMem PNET_BUFFER_LIST NetBufferLists,
[in] NDIS_PORT_NUMBER PortNumber,
[in] ULONG SendFlags
);
Paramètres
[in] NdisBindingHandle
Handle qui identifie l’adaptateur cible. Un appel précédent à NdisOpenAdapterEx a retourné ce handle.
[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] PortNumber
Numéro de port qui identifie un port d’adaptateur miniport. Le numéro de port par défaut d’un adaptateur miniport est égal à zéro. Les pilotes de protocole qui n’utilisent pas de ports d’adaptateur miniport doivent spécifier le port par défaut.
[in] SendFlags
Indicateurs qui définissent des attributs pour l’opération d’envoi. Les indicateurs peuvent être combinés à 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 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
Spécifie que 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 surlysant 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 overlying. Cet indicateur n’a aucun effet sur la vérification de la bouclage ou de la bouclage, sur d’autres liaisons.
Valeur de retour
Aucun
Remarques
Après qu’un pilote de protocole appelle NdisSendNetBufferLists, NDIS envoie les structures NET_BUFFER_LIST à un pilote sous-jacent MiniportSendNetBufferLists 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 peut également allouer les structures juste avant d’appeler NdisSendNetBufferLists, puis les libérer lorsque l’opération d’envoi est terminée. Quand NDIS retourne une structure NET_BUFFER_LIST à ProtocolSendNetBufferListsComplete, le pilote miniport peut préparer la structure NET_BUFFER_LIST et toutes les ressources associées à réutiliser. La réutilisation des structures NET_BUFFER_LIST peut obtenir de meilleures performances que le retour des structures dans un pool, puis les réaffecter 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’il passe au paramètre NdisBindingHandle. Le handle de liaison fournit les informations requises par NDIS pour renvoyer la structure NET_BUFFER_LIST au pilote de protocole après les appels du pilote miniport sous-jacent NdisMSendNetBufferListsComplete.
Avant d’appeler NdisSendNetBufferLists, un pilote de protocole 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 NdisSendNetBufferLists 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 via le réseau.
Dès qu’un pilote de protocole appelle NdisSendNetBufferLists, il abandonne la propriété des structures NET_BUFFER_LIST et toutes les ressources associées. NDIS appelle la fonction ProtocolSendNetBufferListsComplete pour renvoyer 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 liste liée unique de structures NET_BUFFER_LIST avant de passer la liste à ProtocolSendNetBufferListsComplete.
Tant que NDIS n’appelle ProtocolSendNetBufferListsComplete, 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 NdisSendNetBufferLists. Un pilote de protocole ne doit jamais tenter d’examiner les structures NET_BUFFER_LIST ou les données associées après avoir appelé NdisSendNetBufferLists.
Exigences
Exigence | Valeur |
---|---|
client minimum pris en charge | Prise en charge dans NDIS 6.0 et versions ultérieures. |
plateforme cible | Universel |
d’en-tête | ndis.h (include Ndis.h) |
bibliothèque | Ndis.lib |
IRQL | <=DISPATCH_LEVEL |
règles de conformité DDI | Irql_SendRcv_Function(ndis) |