Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Un pilote surlysant émet une demande de méthode OID de OID_RECEIVE_FILTER_SET_FILTER pour définir un filtre sur une carte réseau.
Le InformationBuffer membre de la structure NDIS_OID_REQUEST contient un pointeur vers une mémoire tampon allouée par l’appelant. Cette mémoire tampon est mise en forme pour contenir les éléments suivants :
Structure NDIS_RECEIVE_FILTER_PARAMETERS qui spécifie les paramètres d’un filtre de réception NDIS.
Tableau de structures NDIS_RECEIVE_FILTER_FIELD_PARAMETERS qui spécifie le critère de test de filtre d’un champ dans un en-tête de paquet réseau.
Après un retour réussi de la requête de méthode OID, l'InformationBuffer membre de la structure NDIS_OID_REQUEST contient un pointeur vers une structure NDIS_RECEIVE_FILTER_PARAMETERS. Si le pilote surlysant crée un filtre de réception, NDIS met à jour cette structure avec un nouvel identificateur de filtre.
Remarques
Les filtres de réception NDIS sont utilisés dans les interfaces NDIS suivantes :
de fusion des paquets NDIS . Pour plus d’informations sur l’utilisation des filtres de réception dans cette interface, consultez Gestion des filtres de réception de fusion de paquets.
virtualisation d’E/S racine unique (SR-IOV). Pour plus d’informations sur l’utilisation de filtres de réception dans cette interface, consultez Définition d’un filtre de réception sur un port virtuel.
file d’attente de machines virtuelles (VMQ). Pour plus d’informations sur l’utilisation des filtres de réception dans cette interface, consultez Paramètre et effacement des filtres VMQ.
La demande de méthode OID de OID_RECEIVE_FILTER_SET_FILTER est obligatoire pour les pilotes miniport qui prennent en charge la fusion des paquets NDIS, SR-IOV ou VMQ.
Le pilote overlying initialise la structure NDIS_RECEIVE_FILTER_PARAMETERS avec sa configuration de filtre demandée. NDIS affecte un identificateur de filtre dans le FilterId membre de la structure NDIS_RECEIVE_FILTER_PARAMETERS et transmet la demande de méthode au pilote miniport sous-jacent.
Chaque filtre défini sur une file d’attente de réception a un identificateur de filtre unique pour une carte réseau. Autrement dit, les identificateurs de filtre ne sont pas dupliqués sur différentes files d’attente que la carte réseau gère. Lorsque NDIS reçoit une requête OID pour définir un filtre sur une file d’attente de réception, il vérifie les paramètres de filtre. Une fois que NDIS alloue les ressources nécessaires et l’identificateur de filtre, il envoie la requête OID à la carte réseau sous-jacente. Si la carte réseau peut allouer correctement les ressources logicielles et matérielles nécessaires pour le filtre, elle termine la requête OID avec un état de retour de NDIS_STATUS_SUCCESS.
Remarque À partir de NDIS 6.30, le filtre de réception de fusion de paquets n’est pris en charge que dans la file d’attente de réception par défaut de la carte réseau. Cette file d’attente de réception a un identificateur de NDIS_DEFAULT_RECEIVE_QUEUE_ID.
Le pilote miniport doit conserver les identificateurs de filtre pour les filtres de réception alloués. NDIS utilise l’identificateur d’un filtre dans les requêtes OID ultérieures pour modifier les paramètres de filtre de réception ou effacer le filtre de réception.
Une fois qu’un pilote miniport reçoit une demande de OID_RECEIVE_FILTER_QUEUE_ALLOCATION_COMPLETE et qu’il a des filtres définis dans la file d’attente, la file d’attente est à l’état En cours d’exécution. Dans cet état, le pilote miniport peut démarrer des indications de paquets dans la file d’attente en appelant NdisMIndicateReceiveNetBufferLists.
Instructions supplémentaires pour l’interface de SR-IOV
Les points suivants s’appliquent aux pilotes miniport qui prennent en charge l’interface SR-IOV :
Pour l’interface SR-IOV, une file d’attente de réception est créée sur un port virtuel par défaut ou non défini (VPort).
Remarque à partir de Windows Server 2012, l’interface SR-IOV prend uniquement en charge la file d’attente de réception par défaut d’une fenêtre virtuelle.
Une fois qu’un SR-IOV VPort est alloué par le biais d’une demande de jeu d’OID de OID_NIC_SWITCH_CREATE_VPORT, les pilotes overlying peuvent définir des filtres sur le VPort avec des requêtes OID de OID_RECEIVE_FILTER_SET_FILTER.
Remarque uniquement le pilote sur lequel le VPort alloué peut définir un filtre sur ce VPort.
Étant donné que le VPort par défaut existe toujours, les pilotes de superposition peuvent toujours définir un filtre sur le VPort par défaut.
Lorsque le VPort est créé, aucun filtre de réception n’est défini dessus. Dans ce cas, le pilote miniport ne doit pas indiquer de paquets de réception sur ce VPort avant que le pilote miniport reçoive une requête OID de OID_RECEIVE_FILTER_SET_FILTER pour le VPort. Une fois cette demande OID émise, le pilote miniport peut indiquer des paquets sur ce VPort.
Remarque Si le pilote miniport indique des paquets sur une fenêtre virtuelle pendant qu’il traite une requête OID de OID_RECEIVE_FILTER_SET_FILTER, il doit terminer la demande OID et retourner un code d’état NDIS_STATUS_SUCCESS.
Instructions supplémentaires pour l’interface VMQ
Les points suivants s’appliquent aux pilotes miniport qui prennent en charge l’interface VMQ :
Une fois qu’une file d’attente de réception VMQ est allouée, les pilotes surgissant peuvent définir des filtres sur la file d’attente de réception avec des requêtes OID de OID_RECEIVE_FILTER_SET_FILTER.
Remarque seul le pilote de protocole qui a alloué une file d’attente de réception peut définir un filtre sur cette file d’attente.
Étant donné que la file d’attente par défaut existe toujours, les pilotes overlying peuvent toujours définir un filtre sur la file d’attente par défaut. Si la carte réseau prend en charge une file d’attente de suppression, les pilotes troplyants peuvent définir un filtre sur la file d’attente de suppression.
Les pilotes surlysants ne possèdent pas les files d’attente par défaut ou les files d’attente de suppression. Par conséquent, tous les pilotes de protocole liés à une carte réseau utilisent la file d’attente par défaut ou de suppression.
Lorsque la file d’attente de réception est créée, aucun filtre de réception n’est défini dessus. Dans ce cas, le pilote miniport ne doit pas indiquer de paquets de réception sur cette file d’attente de réception avant que le pilote miniport reçoive une requête OID de OID_RECEIVE_FILTER_SET_FILTER pour la file d’attente de réception. Une fois cette requête OID émise, le pilote miniport peut indiquer des paquets sur cette file d’attente de réception.
Remarque Si le pilote miniport indique des paquets sur une file d’attente pendant qu’il traite une requête OID de OID_RECEIVE_FILTER_SET_FILTER, il doit terminer la requête OID et retourner un code d’état NDIS_STATUS_SUCCESS.
Retourner des codes d’état
Le pilote miniport retourne l’un des codes d’état suivants pour la requête de méthode OID de OID_RECEIVE_FILTER_SET_FILTER :
NDIS_STATUS_SUCCESS
Le filtre a été défini sur la file d’attente avec succès. La mémoire tampon d’informations contient la structure de NDIS_RECEIVE_FILTER_PARAMETERS mise à jour.
NDIS_STATUS_PENDING
La requête est en attente d’achèvement. Le code d’état final et les résultats sont transmis au gestionnaire d’achèvement de la demande OID de l’appelant.
NDIS_STATUS_INVALID_PARAMETER
Un ou plusieurs des paramètres fournis par le pilote trop grand nombre n’étaient pas valides.
NDIS_STATUS_INVALID_LENGTH
La mémoire tampon d’informations était trop courte. NDIS définit le DATA. METHOD_INFORMATION. OctetsNeeded membre de la structure NDIS_OID_REQUEST à la taille de mémoire tampon minimale requise.
NDIS_STATUS_NOT_SUPPORTED
La version NDIS du pilote miniport est une version antérieure à la version 6.20.
NDIS_STATUS_FAILURE
La demande a échoué pour d’autres raisons.
Exigences
Version |
Pris en charge dans NDIS 6.20 et versions ultérieures. |
En-tête |
Ntddndis.h (include Ndis.h) |
Voir aussi
NdisMIndicateReceiveNetBufferLists
NDIS_RECEIVE_FILTER_PARAMETERS
NET_BUFFER_LIST_RECEIVE_FILTER_ID