structure NDIS_RECEIVE_FILTER_PARAMETERS (ntddndis.h)

La structure NDIS_RECEIVE_FILTER_PARAMETERS spécifie les paramètres d’un filtre de réception NDIS.

Les filtres de réception NDIS sont utilisés dans les interfaces NDIS suivantes :

Syntaxe

typedef struct _NDIS_RECEIVE_FILTER_PARAMETERS {
  NDIS_OBJECT_HEADER       Header;
  ULONG                    Flags;
  NDIS_RECEIVE_FILTER_TYPE FilterType;
  NDIS_RECEIVE_QUEUE_ID    QueueId;
  NDIS_RECEIVE_FILTER_ID   FilterId;
  ULONG                    FieldParametersArrayOffset;
  ULONG                    FieldParametersArrayNumElements;
  ULONG                    FieldParametersArrayElementSize;
  ULONG                    RequestedFilterIdBitCount;
  ULONG                    MaxCoalescingDelay;
  NDIS_NIC_SWITCH_VPORT_ID VPortId;
} NDIS_RECEIVE_FILTER_PARAMETERS, *PNDIS_RECEIVE_FILTER_PARAMETERS;

Membres

Header

Structure NDIS_OBJECT_HEADER pour la structure NDIS_RECEIVE_FILTER_PARAMETERS . Le pilote définit le membre Type de la structure spécifiée par Header sur NDIS_OBJECT_TYPE_DEFAULT.

Pour indiquer la version de la structure NDIS_RECEIVE_FILTER_PARAMETERS , le pilote définit le membre Revision sur l’une des valeurs suivantes :

NDIS_RECEIVE_FILTER_PARAMETERS_REVISION_2

Ajout des membres VPortId et MaxCoalescingDelay pour NDIS 6.30.

Le pilote définit le membre Size sur NDIS_SIZEOF_RECEIVE_FILTER_PARAMETERS_REVISION_2.

NDIS_RECEIVE_FILTER_PARAMETERS_REVISION_1

Version d’origine de NDIS 6.20.

Le pilote définit le membre Size sur NDIS_SIZEOF_RECEIVE_FILTER_PARAMETERS_REVISION_1.

Flags

Or au niveau du bit des indicateurs suivants.

Version Valeur Signification
NDIS 6.50 et versions ultérieures NDIS_RECEIVE_FILTER_PACKET_ENCAPSULATION 0x00000002 Si cet indicateur est défini sur le filtre de réception, la carte réseau doit correspondre à cette adresse MAC dans le cadre Ethernet interne dans les paquets encapsulés.
NDIS 6.20 à NDIS 6.40 0x00000002 NDIS_RECEIVE_FILTER_PACKET_ENCAPSULATION_GRE Si cet indicateur est défini sur le filtre de réception, la carte réseau doit correspondre à cette adresse MAC dans le cadre Ethernet interne dans les paquets encapsulés GRE.

FilterType

Type du filtre de réception.

QueueId

Identificateur de file d’attente de réception. Cet identificateur est un entier compris entre zéro et le nombre de files d’attente que la carte réseau prend en charge. La valeur NDIS_DEFAULT_RECEIVE_QUEUE_ID spécifie la file d’attente de réception par défaut.

Note Les pilotes miniport qui prennent en charge la fusion de paquets NDIS ou l’interface SR-IOV doivent définir le membre QueueId sur NDIS_DEFAULT_RECEIVE_QUEUE_ID.
 

FilterId

Identificateur de filtre de réception. L’identificateur de filtre est un entier compris entre un et le nombre de filtres de réception pris en charge par la carte réseau. La valeur zéro n’est pas valide.

FieldParametersArrayOffset

Décalage, en octets, du premier élément d’un tableau d’éléments qui suivent cette structure. Le décalage est mesuré du début de la structure NDIS_RECEIVE_FILTER_PARAMETERS jusqu’au début du premier élément. Chaque élément du tableau est une structure NDIS_RECEIVE_FILTER_FIELD_PARAMETERS .

Note Si FieldParametersArrayNumElements est défini sur zéro, ce membre est ignoré.
 

FieldParametersArrayNumElements

Nombre d’éléments dans le tableau.

FieldParametersArrayElementSize

Taille en octets de chaque élément contenu dans le tableau.

RequestedFilterIdBitCount

Nombre de bits dans un identificateur de filtre. Le pilote miniport utilise ce nombre de bits pour l’identificateur de filtre dans les données OOB (Hors bande) NetBufferListFilteringInfo dans NET_BUFFER_LIST structures. Si ce membre est égal à zéro, un pilote miniport ne doit pas spécifier l’identificateur de filtre dans les données OOB NetBufferListFilteringInfo .

À compter de NDIS 6.20, ce membre doit être défini sur zéro.

MaxCoalescingDelay

Durée maximale, en millisecondes, pendant laquelle le premier paquet correspondant à ce filtre de réception est enregistré dans la mémoire tampon de fusion matérielle sur la carte réseau.

Dès que le premier paquet correspondant au filtre est reçu, la carte réseau fusionne le paquet. L’adaptateur démarre également un minuteur matériel dont l’heure d’expiration est définie sur la valeur du membre MaxCoalescingDelay . Les paquets supplémentaires qui correspondent au même filtre doivent être coalescés par l’adaptateur sans réinitialiser et redémarrer le minuteur matériel.

Lorsque le minuteur matériel expire, l’adaptateur doit générer une interruption de réception pour signaler à l’hôte les paquets coalescés qui correspondent au filtre de réception.

Note Les pilotes miniport qui ne prennent pas en charge la fusion de paquets NDIS doivent ignorer ce membre.
 

VPortId

Identificateur VPort sur lequel le filtre de réception doit être configuré. La valeur NDIS_DEFAULT_VPORT_ID spécifie le VPort par défaut attaché à la fonction physique PCI Express (PCIe) de la carte réseau.

Note Ce membre est valide uniquement pour l’interface SR-IOV.
 

Remarques

La structure NDIS_RECEIVE_FILTER_PARAMETERS est utilisée avec les requêtes OID de
OID_RECEIVE_FILTER_PARAMETERS et
OID_RECEIVE_FILTER_SET_FILTER. Ces requêtes OID spécifient les paramètres de configuration d’un filtre. Une spécification de filtre peut inclure des tests pour plusieurs champs dans un paquet réseau.

Les membres FieldParametersArrayOffset, FieldParametersArrayNumElements et FieldParametersArrayElementSize de la structure NDIS_RECEIVE_FILTER_PARAMETERS définissent un tableau de NDIS_RECEIVE_FILTER_FIELD_PARAMETERS structures. Chaque structure NDIS_RECEIVE_FILTER_FIELD_PARAMETERS dans le tableau définit le critère de test de filtre pour un champ dans un en-tête de réseau.

La carte réseau combine les résultats de tous les tests sur le terrain avec une opération AND logique. Autrement dit, si un test sur le terrain inclus dans le tableau de structures NDIS_RECEIVE_FILTER_FIELD_PARAMETERS échoue, le paquet réseau ne répond pas au critère de filtre spécifié.

Lorsqu’une carte réseau teste un paquet reçu par rapport à ces critères de filtre, elle doit ignorer tous les champs du paquet où aucun critère de test n’est spécifié.

Si le paquet répond au critère de filtre, la carte réseau doit effectuer l’une des opérations suivantes :

  • Si la carte réseau prend en charge la fusion de paquets de réception NDIS, l’adaptateur doit fusionner le paquet qui correspond au filtre. L’adaptateur doit également fusionner les paquets reçus qui correspondent aux filtres de réception identiques ou différents. L’adaptateur doit s’interrompre lors de la génération de l’interruption de réception jusqu’à ce qu’un autre événement matériel se produise, tel que le suivant :
    • Expiration d’un minuteur matériel dont l’heure d’expiration est définie sur la valeur du membre MaxCoalescingDelay .
    • L’espace disponible dans la mémoire tampon de fusion matérielle atteint une limite de faible débit spécifique à l’adaptateur.

    Pour plus d’informations, consultez Gestion des filtres de réception de fusion de paquets.

  • Si la carte réseau prend en charge l’interface SR-IOV, elle doit transférer le paquet à la file d’attente de réception d’un VPort par défaut ou non par défaut. La file d’attente de réception est spécifiée par le membre QueueId et le VPort est spécifié par le membre VPortId .
    Note À compter de Windows Server 2012, l’interface SR-IOV prend uniquement en charge la file d’attente de réception par défaut sur les VPorts par défaut et non par défaut. La file d’attente de réception par défaut est spécifiée en définissant le membre QueueId sur NDIS_DEFAULT_RECEIVE_QUEUE_ID.
     
  • Si la carte réseau prend en charge l’interface VMQ, elle doit transférer le paquet à la file d’attente de réception spécifiée par le membre QueueId .

Configuration requise

Condition requise Valeur
Client minimal pris en charge Pris en charge dans NDIS 6.20 et versions ultérieures.
En-tête ntddndis.h (include Ndis.h)

Voir aussi

NDIS_OBJECT_HEADER

NDIS_RECEIVE_FILTER_FIELD_PARAMETERS

NET_BUFFER_LIST

OID_RECEIVE_FILTER_PARAMETERS

OID_RECEIVE_FILTER_SET_FILTER