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.
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) |