Partager via


PROTOCOL_CO_RECEIVE_NET_BUFFER_LISTS fonction de rappel (ndis.h)

La fonction ProtocolCoReceiveNetBufferLists traite les indications des pilotes sous-jacents.

Note Vous devez déclarer la fonction à l’aide du type PROTOCOL_CO_RECEIVE_NET_BUFFER_LISTS . Pour plus d’informations, consultez la section Exemples suivante.
 

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 dans une zone de contexte que le pilote de protocole a allouée pour conserver les informations d’état d’une liaison. Ce handle a été passé à NDIS lors d’un appel précédent à NdisOpenAdapterEx.

[in] ProtocolVcContext

Handle vers une zone de contexte allouée par un 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 soit lorsqu’il a appelé la fonction NdisCoCreateVc , soit à partir de sa fonction ProtocolCoCreateVc .

[in] NetBufferLists

Liste liée des 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 figurant dans la liste liée des structures spécifiées par NetBufferLists .

[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

L’IRQL 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 de toutes les structures NET_BUFFER attachées immédiatement après l’appel à ProtocolCoReceiveNetBufferLists .

Valeur de retour

None

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’un 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 de NET_BUFFER_LIST jusqu’à ce qu’il appelle le Fonction NdisReturnNetBufferLists . 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 peu de ressources de réception. Dans ce cas, la fonction ProtocolCoReceiveNetBufferLists doit copier les données reçues dans le stockage alloué au protocole et retourner aussi rapidement que possible.

Sur un système multiprocesseur, ProtocolCoReceiveNetBufferLists peut s’exécuter simultanément sur plusieurs processeurs. Dans ce cas, appliquez la protection (par exemple, utiliser des verrous de rotation) aux structures de données critiques auxquelles ProtocolCoReceiveNetBufferLists accède.

NDIS appelle ProtocolCoReceiveNetBufferLists à IRQL<= DISPATCH_LEVEL.

Exemples

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 fonction permet à l’analyse du code pour les pilotes, le vérificateur de pilotes statique (SDV) et d’autres outils de vérification de trouver les erreurs, et il s’agit d’une exigence pour l’écriture de 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 lors de l’exécution des 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 Annotating Function Behavior.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Pris en charge dans NDIS 6.0 et versions ultérieures.
Plateforme cible Windows
En-tête ndis.h (inclure Ndis.h)
IRQL <= DISPATCH_LEVEL

Voir aussi

Fonctions d’envoi et de réception du pilote de protocole CoNDIS

MiniportReturnNetBufferLists

NET_BUFFER

NET_BUFFER_LIST

NdisCoCreateVc

NdisMCoIndicateReceiveNetBufferLists

NdisOpenAdapterEx

NdisReturnNetBufferLists

ProtocolCoCreateVc

ProtocolCoSendNetBufferListsComplete