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 à NetBufferLists .
[in] ReceiveFlags
Indicateurs qui définissent des attributs pour l’indication de réception. Les indicateurs peuvent être combinés à 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 le runtime d’intégration 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 toutes les structures NET_BUFFER jointes immédiatement après l’appel à NdisFIndicateReceiveNetBufferLists retourne.
NDIS_RECEIVE_FLAGS_SINGLE_ETHER_TYPE
Spécifie que toutes les structures NET_BUFFER_LIST dans la liste à NetBufferLists ont le même type de protocole (EtherType).
NDIS_RECEIVE_FLAGS_SINGLE_VLAN
Spécifie que toutes les structures NET_BUFFER_LIST dans la liste à 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 à NetBufferLists incluent uniquement les données qui correspondent au filtre de paquets et à la liste d’adresses multidiffusion affectées à l’adaptateur miniport.
NDIS_RECEIVE_FLAGS_SINGLE_QUEUE
Spécifie que toutes les structures NET_BUFFER_LIST dans la liste à 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 les indicateurs membre 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 dans la liste à NetBufferLists contiennent des informations de mémoire partagée valides. Lorsque cet indicateur est défini sur un NET_BUFFER_LISTreç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 paquet 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 machines virtuelles 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 Hyper-V indicateurs d’envoi et de réception extensibles.
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 Hyper-V indicateurs d’envoi et de réception extensibles.
Valeur de retour
Aucun
Remarques
Lorsqu’un pilote de filtre appelle la fonction NdisFIndicateReceiveNetBufferLists, elle spécifie une liste de structures NET_BUFFER_LIST dans le paramètre NetBufferLists. NDIS transmet les structures de NET_BUFFER_LIST aux pilotes surlysants.
Les pilotes de filtre peuvent appeler NdisFIndicateReceiveNetBufferLists d’origine d’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 FilterReceiveNetBufferLists fonction pour filtrer ces indications de réception.
Un pilote de filtre doit définir le membre SourceHandle de chaque structure de NET_BUFFER_LIST qu’elle provient de 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 qu’il n’a pas créés.
Le pilote de filtre doit initialiser correctement les structures NET_BUFFER_LIST, les structures NET_BUFFER attachées et les DLL jointes.
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 ne renvoie pas les structures NET_BUFFER_LIST pour 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 FilterReturnNetBufferList s 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 à partir de NdisFIndicateReceiveNetBufferLists. Le pilote de filtre doit récupérer les structures NET_BUFFER_LIST immédiatement après NdisFIndicateReceiveNetBufferLists retourne. 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 de NDIS_RECEIVE_FLAG_RESOURCES dans le paramètre ReceiveFlags force les pilotes surlysés à copier les données réseau et à libérer les structures NET_BUFFER_LIST dans le pilote de filtre.