Partager via


MINIPORT_CO_SEND_NET_BUFFER_LISTS fonction de rappel (ndis.h)

La fonction MiniportCoSendNetBufferLists transmet les données réseau contenues dans une liste liée spécifiée de structures NET_BUFFER_LIST.

Remarque Vous devez déclarer la fonction à l’aide du type MINIPORT_CO_SEND_NET_BUFFER_LISTS. Pour plus d’informations, consultez la section Exemples suivants.
 

Syntaxe

MINIPORT_CO_SEND_NET_BUFFER_LISTS MiniportCoSendNetBufferLists;

void MiniportCoSendNetBufferLists(
  [in] NDIS_HANDLE MiniportVcContext,
  [in] PNET_BUFFER_LIST NetBufferLists,
  [in] ULONG SendFlags
)
{...}

Paramètres

[in] MiniportVcContext

Handle vers une zone de contexte allouée par le pilote miniport dans laquelle le pilote miniport conserve son état de connexion par connexion virtuelle (VC). Le pilote miniport a fourni cette poignée à NDIS à partir de sa fonction MiniportCoCreateVc.

[in] NetBufferLists

Pointeur vers la première structure NET_BUFFER_LIST dans une liste liée de structures NET_BUFFER_LIST. Chaque structure NET_BUFFER_LIST de la liste décrit une liste de structures NET_BUFFER. Chaque structure NET_BUFFER dans la liste est mappée à une chaîne de listes de descripteurs de mémoire (MDL). Les DLL contiennent les données réseau qui MiniportCoSendNetBufferLists transmet.

[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. MiniportCoSendNetBufferLists prend en charge les indicateurs suivants :

NDIS_SEND_FLAGS_DISPATCH_LEVEL

L’appelant peut éventuellement définir cet indicateur si 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 surlysant peut remplacer ce comportement en définissant l’indicateur de 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

La fonction MiniportCoSendNetBufferLists est requise pour les pilotes miniport CoNDIS. Lorsqu’un pilote surlysant appelle le NdisCoSendNetBufferLists fonction, NDIS appelle la fonction MiniportCoSendNetBufferLists fonction du pilote miniport lié.

L’ordre de la liste liée des structures NET_BUFFER_LIST transmises par NDIS à NetBufferLists représente l’ordre dans lequel le pilote miniport doit transmettre les données réseau. En outre, un pilote miniport doit envoyer les structures NET_BUFFER_LIST de plusieurs MiniportCoSendNetBufferLists dans l’ordre dans lequel le pilote miniport a reçu les structures.

Les pilotes miniport CoNDIS doivent accepter toutes les demandes d’envoi effectuées par NDIS en appelant la fonction MiniportCoSendNetBufferLists. Si un pilote miniport ne peut pas effectuer une demande d’envoi immédiatement, le pilote doit contenir la demande dans une file d’attente jusqu’à ce qu’elle puisse terminer la requête. Pendant qu’une demande d’envoi est en attente, le pilote miniport conserve la propriété des structures NET_BUFFER_LIST et toutes les ressources associées aux structures NET_BUFFER_LIST.

Le pilote miniport doit appeler le fonction NdisMCoSendNetBufferListsComplete pour terminer toutes les demandes d’envoi coNDIS. Pour améliorer les performances de l’ordinateur, le pilote peut créer une liste liée qui contient les structures NET_BUFFER_LIST à partir de plusieurs requêtes d’envoi. Le pilote peut ensuite passer une telle liste liée dans un seul appel à NdisMCoSendNetBufferListsComplete.

En outre, vous devez supposer que le pilote miniport ne peut pas accéder aux structures NET_BUFFER_LIST et à d’autres ressources associées dès que le pilote appelle NdisMCoSendNetBufferListsComplete.

La fonction MiniportCoSendNetBufferLists doit synchroniser l’accès à ses files d’attente internes de données réseau avec les autres fonctions MiniportXxx du pilote qui accèdent aux mêmes files d’attente. Un pilote miniport peut utiliser des verrous de rotation pour synchroniser l’accès aux files d’attente.

Les pilotes de protocole sont chargés de déterminer les données réseau requises, en fonction du type moyen sélectionné par le pilote miniport lié. Toutefois, un pilote de protocole peut fournir des données réseau qui spécifient des paquets plus courts que la taille minimale des paquets pour le support sélectionné. Dans ce cas, MiniportCoSendNetBufferLists devez remplir les paquets avec des zéros si le support sélectionné impose une exigence de longueur minimale sur la taille du paquet de transmission.

NDIS appelle MiniportCoSendNetBufferLists au<IRQL = DISPATCH_LEVEL.

exemples de

Pour définir une fonction MiniportCoSendNetBufferLists, vous devez d’abord fournir une déclaration de fonction qui identifie le type de fonction que vous définissez. Windows fournit un ensemble de types de fonctions pour les pilotes. La déclaration d’une fonction à l’aide des types de fonctions permet d'Analyse du code pour les pilotes, de vérificateur de pilotes statiques (SDV) et d’autres outils de vérification recherchent des erreurs, et il est nécessaire d’écrire des pilotes pour le système d’exploitation Windows.

Par exemple, pour définir une fonction MiniportCoSendNetBufferLists nommée « MyCoSendNetBufferLists », utilisez le type MINIPORT_CO_SEND_NET_BUFFER_LISTS comme indiqué dans cet exemple de code :

MINIPORT_CO_SEND_NET_BUFFER_LISTS MyCoSendNetBufferLists;

Ensuite, implémentez votre fonction comme suit :

_Use_decl_annotations_
VOID
 MyCoSendNetBufferLists(
    NDIS_HANDLE  MiniportVcContext,
    PNET_BUFFER_LIST  NetBufferLists,
    ULONG  SendFlags
    )
  {...}

Le type de fonction MINIPORT_CO_SEND_NET_BUFFER_LISTS est défini dans le fichier d’en-tête Ndis.h. Pour identifier plus précisément les erreurs lorsque vous exécutez les outils d’analyse du code, veillez à ajouter l’annotation Use_decl_annotations à votre définition de fonction. L’annotation Use_decl_annotations garantit que les annotations appliquées au type de fonction MINIPORT_CO_SEND_NET_BUFFER_LISTS dans le fichier d’en-tête sont utilisées. Pour plus d’informations sur la configuration requise pour les déclarations de fonction, consultez Déclaration de fonctions à l’aide de types de rôles de fonction pour les pilotes NDIS.

Pour plus d’informations sur Use_decl_annotations, consultez annoter le comportement de la fonction.

Exigences

Exigence Valeur
client minimum pris en charge Prise en charge dans NDIS 6.0 et versions ultérieures.
plateforme cible Windows
d’en-tête ndis.h (include Ndis.h)
IRQL <= DISPATCH_LEVEL

Voir aussi

MiniportCoCreateVc

NET_BUFFER

NET_BUFFER_LIST

NdisCoSendNetBufferLists

NdisMCoSendNetBufferListsComplete