PROTOCOL_CO_RECEIVE_NET_BUFFER_LISTS fonction de rappel (ndis.h)
Les processus de fonction ProtocolCoReceiveNetBufferLists reçoivent des indications des pilotes sous-jacents.
Syntaxe
PROTOCOL_CO_RECEIVE_NET_BUFFER_LISTS ProtocolCoReceiveNetBufferLists;
void ProtocolCoReceiveNetBufferLists(
[in] NDIS_HANDLE ProtocolBindingContext,
[in] NDIS_HANDLE ProtocolVcContext,
[in] PNET_BUFFER_LIST NetBufferLists,
[in] ULONG NumberOfNetBufferLists,
[in] ULONG ReceiveFlags
)
{...}
Paramètres
[in] ProtocolBindingContext
Handle vers une zone de contexte allouée par le pilote de protocole pour conserver les informations d’état d’une liaison. Ce handle a été passé à NDIS dans un appel précédent à NdisOpenAdapterEx.
[in] ProtocolVcContext
Handle vers une zone de contexte allouée par le pilote de protocole dans laquelle ce pilote gère les informations d’état d’exécution par connexion virtuelle (VC). Un client ou un gestionnaire d’appels autonome a fourni ce handle lorsqu’il a appelé la fonction NdisCoCreateVc ou à partir de sa fonction ProtocolCoCreateVc.
[in] NetBufferLists
Liste liée de structures NET_BUFFER_LIST allouées par le pilote sous-jacent. Chaque structure NET_BUFFER_LIST est généralement associée à une structure NET_BUFFER.
[in] NumberOfNetBufferLists
Nombre de structures NET_BUFFER_LIST qui se trouvent dans la liste liée de structures qui NetBufferLists spécifie.
[in] ReceiveFlags
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. ProtocolCoReceiveNetBufferLists prend en charge les indicateurs suivants :
NDIS_RECEIVE_FLAGS_DISPATCH_LEVEL
Le runtime d’intégration actuel est DISPATCH_LEVEL. Pour plus d’informations sur cet indicateur, consultez Dispatch IRQL Tracking.
NDIS_RECEIVE_FLAGS_RESOURCES
NDIS récupère la propriété des structures NET_BUFFER_LIST et toutes les structures NET_BUFFER attachées immédiatement après l’appel à ProtocolCoReceiveNetBufferLists retourne.
Valeur de retour
Aucun
Remarques
La fonction ProtocolCoReceiveNetBufferLists est requise pour les pilotes de protocole CoNDIS. NDIS appelle ProtocolCoReceiveNetBufferLists après qu’un pilote miniport lié appelle le fonction NdisMCoIndicateReceiveNetBufferLists. Un appel à ProtocolCoReceiveNetBufferLists peut également se produire à la suite d’une bouclage.
Si l’indicateur NDIS_RECEIVE_FLAGS_RESOURCES dans le paramètre coReceiveFlags n’est pas défini, le pilote de protocole conserve la propriété des structures NET_BUFFER_LIST jusqu’à ce qu’il appelle le NdisReturnNetBufferLists fonction. Si NDIS définit l’indicateur NDIS_RECEIVE_FLAGS_RESOURCES, le pilote de protocole ne peut pas conserver la structure NET_BUFFER_LIST et les ressources associées. NDIS_RECEIVE_FLAGS_RESOURCES indique qu’un pilote sous-jacent a des ressources de faible réception. Dans ce cas, la fonction ProtocolCoReceiveNetBufferLists doit copier les données reçues dans le stockage alloué au protocole et retourner le plus rapidement possible.
Sur un système multiprocesseur, ProtocolCoReceiveNetBufferLists peuvent s’exécuter simultanément sur plusieurs processeurs. Dans ce cas, appliquez une protection (par exemple, utilisez des verrous de rotation) à des structures de données critiques qui ProtocolCoReceiveNetBufferLists accès.
NDIS appelle ProtocolCoReceiveNetBufferLists au<IRQL = DISPATCH_LEVEL.
exemples de
Pour définir une fonction ProtocolCoReceiveNetBufferLists, 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 ProtocolCoReceiveNetBufferLists nommée « MyCoReceiveNetBufferLists », utilisez le type PROTOCOL_CO_RECEIVE_NET_BUFFER_LISTS comme indiqué dans cet exemple de code :
PROTOCOL_CO_RECEIVE_NET_BUFFER_LISTS MyCoReceiveNetBufferLists;
Ensuite, implémentez votre fonction comme suit :
_Use_decl_annotations_
VOID
MyCoReceiveNetBufferLists(
NDIS_HANDLE ProtocolBindingContext,
NDIS_HANDLE ProtocolVcContext,
INPNET_BUFFER_LIST NetBufferLists,
ULONG NumberOfNetBufferLists,
ULONG ReceiveFlags
)
{...}
Le type de fonction PROTOCOL_CO_RECEIVE_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 PROTOCOL_CO_RECEIVE_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
fonctions d’envoi et de réception du pilote de protocole CoNDIS
MiniportReturnNetBufferLists NdisMCoIndicateReceiveNetBufferLists