NDIS_RECEIVE_FILTER_FIELD_PARAMETERS structure (ntddndis.h)
La structure NDIS_RECEIVE_FILTER_FIELD_PARAMETERS spécifie le critère de test de filtre pour un champ dans un en-tête de paquet réseau.
Les filtres de réception NDIS sont utilisés dans les interfaces NDIS suivantes :
-
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 des filtres de réception dans cette interface, consultez Définition d’un filtre de réception sur un port virtuel.
-
Virtual Machine Queue (VMQ). Pour plus d’informations sur l’utilisation des filtres de réception dans cette interface, consultez Définition et effacement des filtres VMQ.
Syntaxe
typedef struct _NDIS_RECEIVE_FILTER_FIELD_PARAMETERS {
NDIS_OBJECT_HEADER Header;
ULONG Flags;
NDIS_FRAME_HEADER FrameHeader;
NDIS_RECEIVE_FILTER_TEST ReceiveFilterTest;
union {
NDIS_MAC_HEADER_FIELD MacHeaderField;
NDIS_ARP_HEADER_FIELD ArpHeaderField;
NDIS_IPV4_HEADER_FIELD IPv4HeaderField;
NDIS_IPV6_HEADER_FIELD IPv6HeaderField;
NDIS_UDP_HEADER_FIELD UdpHeaderField;
} HeaderField;
_HEADER_FIELD _HEADER_FIELD;
union {
UCHAR FieldByteValue;
USHORT FieldShortValue;
ULONG FieldLongValue;
ULONG64 FieldLong64Value;
UCHAR FieldByteArrayValue[16];
} FieldValue;
_FIELD_VALUE _FIELD_VALUE;
union {
UCHAR ResultByteValue;
USHORT ResultShortValue;
ULONG ResultLongValue;
ULONG64 ResultLong64Value;
UCHAR ResultByteArrayValue[16];
} ResultValue;
_RESULT_VALUE _RESULT_VALUE;
} NDIS_RECEIVE_FILTER_FIELD_PARAMETERS, *PNDIS_RECEIVE_FILTER_FIELD_PARAMETERS;
Membres
Header
Structure NDIS_OBJECT_HEADER de la structure NDIS_RECEIVE_FILTER_FIELD_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_FIELD_PARAMETERS , le pilote définit le membre Revision sur l’une des valeurs suivantes :
Flags
Or au niveau du bit d’indicateurs. Les indicateurs suivants sont valides pour le OID_RECEIVE_FILTER_SET_FILTER OID.
Valeur | Signification |
---|---|
|
Si cet indicateur est défini, la carte réseau doit indiquer uniquement les paquets reçus qui respectent les critères suivants :
Note Si un pilote qui se chevauche définit un filtre d’adresse MAC et un filtre d’identificateur de réseau local virtuel avec une requête OID de OID_RECEIVE_FILTER_SET_FILTER, il ne définit cet indicateur dans aucun des champs de filtre. Dans ce cas, le pilote miniport doit indiquer les paquets qui correspondent à la fois à l’adresse MAC spécifiée et à l’identificateur de réseau local virtuel. Autrement dit, le pilote miniport ne doit pas indiquer les paquets avec une adresse MAC correspondante qui ont un identificateur de VLAN zéro ou qui sont des paquets non étiquetés.
|
FrameHeader
Type d’en-tête dans la trame de données réseau.
ReceiveFilterTest
Type de test à effectuer pour le filtre de réception.
HeaderField
Type de champ dans un en-tête. Le type de champ (par exemple, NDIS_MAC_HEADER_FIELD) correspond au type d’en-tête spécifié dans le membre FrameHeader .
Cette union contient les membres suivants :
HeaderField.MacHeaderField
Type de champ dans un en-tête MAC.
HeaderField.ArpHeaderField
Type de champ dans un en-tête ARP (Address Resolution Protocol).
HeaderField.IPv4HeaderField
Valeur d’énumération NDIS_IPV4_HEADER_FIELD qui spécifie le type de champ dans un en-tête IP version 4 (IPv4).
HeaderField.IPv6HeaderField
Valeur d’énumération NDIS_IPV6_HEADER_FIELD qui spécifie le type de champ dans un en-tête IP version 6 (IPv6).
HeaderField.UdpHeaderField
Type de champ dans un en-tête UDP (User Datagram Protocol).
_HEADER_FIELD
FieldValue
Valeur que l’adaptateur miniport compare à la valeur de champ d’en-tête correspondante dans les paquets entrants. L’emplacement de la valeur du champ d’en-tête est déterminé par le type de champ spécifié dans le membre HeaderField .
Pour plus d'informations, consultez la section Notes.
Cette union contient les membres suivants :
FieldValue.FieldByteValue
Valeur UCHAR à comparer avec un champ dans un paquet réseau.
FieldValue.FieldShortValue
Valeur USHORT à comparer à un champ dans un paquet réseau.
FieldValue.FieldLongValue
Valeur ULONG à comparer avec un champ dans un paquet réseau.
FieldValue.FieldLong64Value
Valeur ULONG64 à comparer à un champ dans un paquet réseau.
FieldValue.FieldByteArrayValue[16]
Tableau UCHAR à comparer avec un champ dans un paquet réseau.
_FIELD_VALUE
ResultValue
Union qui contient une valeur de résultat de test.
Si le membre ReceiveFilterTest est défini sur NdisReceiveFilterTestMaskEqual, la carte réseau calcule d’abord un résultat à partir de la valeur dans le membre FieldValue et de la valeur du champ d’en-tête comme spécifié par le membre HeaderField . L’adaptateur compare ensuite le résultat calculé avec ResultValue.
Pour plus d'informations, consultez la section Notes.
Cette union contient les membres suivants :
ResultValue.ResultByteValue
Valeur UCHAR à comparer avec un résultat de test.
ResultValue.ResultShortValue
Valeur USHORT à comparer avec un résultat de test.
ResultValue.ResultLongValue
Valeur ULONG à comparer avec un résultat de test.
ResultValue.ResultLong64Value
Valeur ULONG64 à comparer avec un résultat de test.
ResultValue.ResultByteArrayValue[16]
Tableau UCHAR à comparer avec un résultat de test.
_RESULT_VALUE
Remarques
La structure NDIS_RECEIVE_FILTER_FIELD_PARAMETERS spécifie le critère de test de filtre pour un champ dans un tableau possible de tests sur le terrain qui peuvent être spécifiés avec le NDIS_RECEIVE_FILTER_PARAMETERS structure.
Le tableau suivant décrit comment la carte réseau utilise les membres ReceiveFilterTest, FieldValue et ResultValue pour effectuer un test de filtre sur la valeur de champ d’en-tête spécifiée d’un paquet reçu.
Valeur ReceiveFilterTest | Test de filtre effectué par la carte réseau |
---|---|
NdisReceiveFilterTestEqual | (<valeur du champ d’en-tête> == FieldValue) |
NdisReceiveFilterTestMaskEqual | ((<valeur de champ d’en-tête> & FieldValue) == ResultValue) |
NdisReceiveFilterTestNotEqual | (<valeur du champ d’en-tête> != FieldValue) |
- Pour NDIS 6.20, le pilote miniport doit retourner une status ayant échoué pour la requête OID de OID_RECEIVE_FILTER_SET_FILTER.
-
À compter de NDIS 6.30, si l’indicateur de NDIS_RECEIVE_FILTER_FIELD_MAC_HEADER_VLAN_UNTAGGED_OR_ZERO n’est pas défini et qu’aucun filtre d’identificateur de réseau local virtuel n’est configuré par la demande de méthode OID_RECEIVE_FILTER_SET_FILTER, le pilote miniport doit effectuer l’une des opérations suivantes :
- Le pilote miniport doit retourner une status ayant échoué pour la demande de méthode OID_RECEIVE_FILTER_SET_FILTER.
- Le pilote miniport doit configurer la carte réseau pour inspecter et filtrer les champs d’adresse MAC spécifiés. Si une balise VLAN est présente dans le paquet reçu, la carte réseau doit la supprimer des données du paquet. Le pilote miniport doit placer la balise VLAN dans un NDIS_NET_BUFFER_LIST_8021Q_INFO associé à la structure NET_BUFFER_LIST du paquet.
-
Le pilote miniport doit configurer la carte réseau pour inspecter et filtrer les champs d’adresse MAC et d’identificateur de réseau local virtuel spécifiés.
Si une balise VLAN est présente dans le paquet reçu, la carte réseau doit la supprimer des données du paquet. Le pilote miniport doit placer la balise VLAN dans un NDIS_NET_BUFFER_LIST_8021Q_INFO associé à la structure NET_BUFFER_LIST du paquet.
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_RECEIVE_FILTER_PARAMETERSCommentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour