FILTER_RETURN_NET_BUFFER_LISTS fonction de rappel (ndis.h)

NDIS appelle la fonction FilterReturnNetBufferLists pour renvoyer une liste liée de structures NET_BUFFER_LIST et de données associées à un pilote de filtre.

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

Syntaxe

FILTER_RETURN_NET_BUFFER_LISTS FilterReturnNetBufferLists;

void FilterReturnNetBufferLists(
  [in] NDIS_HANDLE FilterModuleContext,
  [in] PNET_BUFFER_LIST NetBufferLists,
  [in] ULONG ReturnFlags
)
{...}

Paramètres

[in] FilterModuleContext

Handle de la zone de contexte pour le module de filtre. Le pilote de filtre a créé et initialisé cette zone de contexte dans la fonction FilterAttach .

[in] NetBufferLists

Liste liée des structures NET_BUFFER_LIST indiquées par le pilote de filtre en appelant le Fonction NdisFIndicateReceiveNetBufferLists . La liste peut inclure des structures NET_BUFFER_LIST de plusieurs appels à NdisFIndicateReceiveNetBufferLists.

[in] ReturnFlags

Indicateurs NDIS qui 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_RETURN_FLAGS_DISPATCH_LEVEL

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

NDIS_RETURN_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_RECEIVE_FLAGS_SWITCH_SINGLE_SOURCE dans le paramètre ReceiveFlags de FilterReceiveNetBufferLists lorsqu’elle envoie la demande.
 

Valeur de retour

None

Remarques

FilterReturnNetBufferLists est une fonction facultative. Si un pilote de filtre ne filtre pas les indications de réception, il peut définir le point d’entrée de cette fonction sur NULL lorsqu’il appelle le Fonction NdisFRegisterFilterDriver .

Le pilote de filtre peut appeler la fonction NdisSetOptionalHandlers , à partir de la fonction FilterSetModuleOptions , pour spécifier une fonction FilterReturnNetBufferLists pour un module de filtre.

Note Un pilote de filtre qui ne fournit pas de fonction FilterReturnNetBufferLists ne peut pas appeler le Fonction NdisFIndicateReceiveNetBufferLists pour lancer une indication de réception.
 
Note Un pilote de filtre qui fournit une fonction FilterReturnNetBufferLists doit fournir une fonction FilterStatus .
 
Lorsque NDIS appelle FilterReturnNetBufferLists, le pilote de filtre reprend la propriété des structures NET_BUFFER_LIST et des données associées.

Si un pilote sous-jacent a lancé l’indication de réception, le pilote de filtre doit appeler le Fonction NdisFReturnNetBufferLists pour terminer l’indication de réception.

Si le pilote de filtre est à l’origine de l’indication de réception, FilterReturnNetBufferLists peut libérer les structures NET_BUFFER_LIST et les données associées ou les préparer à la réutilisation dans un appel ultérieur à NdisFIndicateReceiveNetBufferLists.

Un pilote de filtre doit suivre les indications de réception qu’il lance et s’assurer qu’il n’appelle pas NdisFReturnNetBufferLists quand NDIS appelle FilterReturnNetBufferLists.

NDIS appelle FilterReturnNetBufferLists à l’adresse IRQL <= DISPATCH_LEVEL.

Exemples

Pour définir une fonction FilterReturnNetBufferLists , 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, au vérificateur de pilotes statiques (SDV) et à d’autres outils de vérification de trouver des erreurs. 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 FilterReturnNetBufferLists nommée « MyReturnNetBufferLists », utilisez le type FILTER_RETURN_NET_BUFFER_LISTS comme indiqué dans cet exemple de code :

FILTER_RETURN_NET_BUFFER_LISTS MyReturnNetBufferLists;

Ensuite, implémentez votre fonction comme suit :

_Use_decl_annotations_
VOID
 MyReturnNetBufferLists(
    NDIS_HANDLE  FilterModuleContext,
    PNET_BUFFER_LIST  NetBufferLists,
    ULONG  ReturnFlags
    )
  {...}

Le type de fonction FILTER_RETURN_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 FILTER_RETURN_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

FilterAttach

FilterSetModuleOptions

FilterStatus

NET_BUFFER

NET_BUFFER_LIST

NdisFIndicateReceiveNetBufferLists

NdisFRegisterFilterDriver

NdisFReturnNetBufferLists

NdisSetOptionalHandlers