Partager via


NdisFIndicateReceiveNetBufferLists, fonction (ndis.h)

Un pilote de filtre appelle NdisFIndicateReceiveNetBufferLists pour indiquer qu’il a reçu des données réseau. Pour plus d’informations, consultez Réception de données dans un pilote de filtre.

Syntaxe

void NdisFIndicateReceiveNetBufferLists(
  [in] NDIS_HANDLE      NdisFilterHandle,
  [in] PNET_BUFFER_LIST NetBufferLists,
  [in] NDIS_PORT_NUMBER PortNumber,
  [in] ULONG            NumberOfNetBufferLists,
  [in] ULONG            ReceiveFlags
);

Paramètres

[in] NdisFilterHandle

Handle NDIS qui identifie ce module de filtre. NDIS a passé le handle au pilote de filtre dans un appel à la fonction FilterAttach .

[in] NetBufferLists

Liste liée de structures NET_BUFFER_LIST . Chaque structure NET_BUFFER_LIST contient une structure NET_BUFFER .

[in] PortNumber

Numéro de port qui identifie un port d’adaptateur miniport. Les numéros de port de l’adaptateur miniport sont attribués en appelant la fonction NdisMAllocatePort . Une valeur zéro identifie le port par défaut d’un adaptateur miniport.

[in] NumberOfNetBufferLists

Nombre de structures NET_BUFFER_LIST figurant dans la liste liée des structures dans NetBufferLists .

[in] ReceiveFlags

Indicateurs qui définissent des attributs pour l’indication de réception. Les indicateurs peuvent être combinés avec 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_RECEIVE_FLAGS_DISPATCH_LEVEL

Spécifie que l’IRQL actuel est DISPATCH_LEVEL. Pour plus d’informations sur cet indicateur, consultez Dispatch IRQL Tracking.

NDIS_RECEIVE_FLAGS_RESOURCES

Spécifie que le pilote de filtre 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 à NdisFIndicateReceiveNetBufferLists retourné.

NDIS_RECEIVE_FLAGS_SINGLE_ETHER_TYPE

Spécifie que toutes les structures NET_BUFFER_LIST dans la liste sur NetBufferLists ont le même type de protocole (EtherType).

NDIS_RECEIVE_FLAGS_SINGLE_VLAN

Spécifie que toutes les structures NET_BUFFER_LIST de la liste dans NetBufferLists appartiennent au même réseau local virtuel.

NDIS_RECEIVE_FLAGS_PERFECT_FILTERED

Spécifie que toutes les structures NET_BUFFER_LIST dans la liste sur NetBufferLists incluent uniquement les données qui correspondent au filtre de paquets et à la liste d’adresses de multidiffusion qui sont affectées à l’adaptateur miniport.

NDIS_RECEIVE_FLAGS_SINGLE_QUEUE

Spécifie que toutes les structures NET_BUFFER_LIST dans la liste dans NetBufferLists appartiennent à la même file d’attente de machines virtuelles. Un pilote miniport doit définir cet indicateur pour toutes les indications de réception sur une file d’attente si l’indicateur NDIS_RECEIVE_QUEUE_PARAMETERS_PER_QUEUE_RECEIVE_INDICATION a été défini dans le membre Flags du NDIS_RECEIVE_QUEUE_PARAMETERS structure lorsque cette file d’attente a été allouée.

NDIS_RECEIVE_FLAGS_SHARED_MEMORY_INFO_VALID

Spécifie que toutes les structures NET_BUFFER_LIST de la liste dans NetBufferLists contiennent des informations de mémoire partagée valides. Lorsque cet indicateur est défini sur un NET_BUFFER_LIST reçu, NDIS traite les informations de mémoire partagée comme valides. Lorsque cet indicateur n’est pas défini, NDIS et les pilotes ignorent les informations de mémoire partagée. Par exemple, les pilotes intermédiaires qui modifient les données de paquets peuvent utiliser cet indicateur pour déterminer si les données doivent être copiées. Les pilotes Miniport peuvent utiliser l’indicateur pour déterminer comment libérer la mémoire associée à une file d’attente de machine virtuelle lorsqu’une file d’attente est supprimée.

NDIS_RECEIVE_FLAGS_MORE_NBLS

Réservé.

NDIS_RECEIVE_FLAGS_SWITCH_SINGLE_SOURCE

Si cet indicateur est défini, tous les paquets d’une liste liée de structures NET_BUFFER_LIST proviennent du même port source de commutateur extensible Hyper-V.

Pour plus d’informations, consultez Indicateurs d’envoi et de réception du commutateur extensible Hyper-V.

Note Si chaque paquet de la liste liée de structures NET_BUFFER_LIST utilise le même port source, l’extension doit définir l’indicateur NDIS_RETURN_FLAGS_SWITCH_SINGLE_SOURCE dans le paramètre ReturnFlags de FilterReturnNetBufferLists une fois la demande de réception terminée. L’extension doit définir cet indicateur dans le paramètre ReturnFlags si elle appelle NdisFReturnNetBufferLists pour retourner les paquets qu’elle n’a pas créés ou clonés.
 

NDIS_RECEIVE_FLAGS_SWITCH_DESTINATION_GROUP

Si cet indicateur est défini, tous les paquets d’une liste liée de structures NET_BUFFER_LIST doivent être transférés vers le même port de destination de commutateur extensible.

Pour plus d’informations, consultez Indicateurs d’envoi et de réception du commutateur extensible Hyper-V.

Valeur de retour

None

Remarques

Lorsqu’un pilote de filtre appelle la fonction NdisFIndicateReceiveNetBufferLists , il spécifie une liste de structures NET_BUFFER_LIST dans le paramètre NetBufferLists . NDIS transmet les structures NET_BUFFER_LIST aux pilotes qui se superposent.

Les pilotes de filtre peuvent appeler NdisFIndicateReceiveNetBufferLists pour créer une indication de réception.

Les pilotes de filtre peuvent également filtrer les indications de réception provenant des pilotes sous-jacents. NDIS appelle le Fonction FilterReceiveNetBufferLists pour filtrer ces indications de réception.

Un pilote de filtre doit définir le membre SourceHandle de chaque structure NET_BUFFER_LIST dont il provient sur la même valeur que le paramètre NdisFilterHandle . Le pilote de filtre ne doit pas modifier le membre SourceHandle dans les structures NET_BUFFER_LIST dont il n’est pas issu.

Le pilote de filtre doit initialiser correctement les structures NET_BUFFER_LIST , les structures NET_BUFFER attachées et toutes les dll MDL attachées.

Si un pilote de filtre appelle la fonction NdisFIndicateReceiveNetBufferLists et efface l’indicateur NDIS_RECEIVE_FLAG_RESOURCES dans le paramètre ReceiveFlags , NDIS retourne les structures NET_BUFFER_LIST indiquées au pilote de filtre Fonction FilterReturnNetBufferLists . Dans ce cas, le pilote de filtre ne doit pas récupérer les structures NET_BUFFER_LIST tant que NDIS n’a pas retourné les structures NET_BUFFER_LIST à FilterReturnNetBufferLists.

Si un pilote de filtre appelle NdisFIndicateReceiveNetBufferLists et définit l’indicateur NDIS_RECEIVE_FLAG_RESOURCES dans le paramètre ReceiveFlags , cela indique que le pilote de filtre doit récupérer immédiatement la propriété des structures NET_BUFFER_LIST . Dans ce cas, NDIS n’appelle pas la fonction FilterReturnNetBufferLists du pilote de filtre pour retourner les structures NET_BUFFER_LIST . Au lieu de cela, NDIS retourne les structures NET_BUFFER_LIST au pilote de filtre lors du retour de NdisFIndicateReceiveNetBufferLists. Le pilote de filtre doit récupérer les structures NET_BUFFER_LIST immédiatement après le retour de NdisFIndicateReceiveNetBufferLists . Pour récupérer les structures NET_BUFFER_LIST , un pilote de filtre peut appeler sa propre fonction FilterReturnNetBufferLists .

La définition de l’indicateur NDIS_RECEIVE_FLAG_RESOURCES dans le paramètre ReceiveFlags force les pilotes sur-ment à copier les données réseau et à libérer les structures NET_BUFFER_LIST dans le pilote de filtre.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Pris en charge dans NDIS 6.0 et versions ultérieures.
Plateforme cible Desktop (Expérience utilisateur)
En-tête ndis.h (inclure Ndis.h)
Bibliothèque Ndis.lib
IRQL <= DISPATCH_LEVEL
Règles de conformité DDI Irql_Filter_Driver_Function(ndis)

Voir aussi

FilterAttach

FilterReceiveNetBufferLists

FilterReturnNetBufferLists

NDIS_RECEIVE_QUEUE_PARAMETERS

NET_BUFFER

NET_BUFFER_LIST

NdisMAllocatePort

Réception de données dans un pilote de filtre