NDIS_RECEIVE_FILTER_FIELD_PARAMETERS-Struktur (ntddndis.h)
Die NDIS_RECEIVE_FILTER_FIELD_PARAMETERS-Struktur gibt das Filtertestkriterium für ein Feld in einem Netzwerkpaketheader an.
NDIS-Empfangsfilter werden in den folgenden NDIS-Schnittstellen verwendet:
-
NDIS Packet Coalescing. Weitere Informationen zur Verwendung von Empfangsfiltern in dieser Schnittstelle finden Sie unter Managing Packet Coalescing Receive Filters .
-
Single Root-E/A-Virtualisierung (SR-IOV) Weitere Informationen zur Verwendung von Empfangsfiltern in dieser Schnittstelle finden Sie unter Festlegen eines Empfangsfilters für einen virtuellen Port.
-
Virtual Machine Queue (VMQ). Weitere Informationen zur Verwendung von Empfangsfiltern in dieser Schnittstelle finden Sie unter Festlegen und Löschen von VMQ-Filtern.
Syntax
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;
Member
Header
Die NDIS_OBJECT_HEADER-Struktur für die NDIS_RECEIVE_FILTER_FIELD_PARAMETERS-Struktur . Der Treiber legt das Typelement der Struktur, die Header angibt, auf NDIS_OBJECT_TYPE_DEFAULT fest.
Um die Version der NDIS_RECEIVE_FILTER_FIELD_PARAMETERS-Struktur anzugeben, legt der Treiber den Revisionsmember auf einen der folgenden Werte fest:
Flags
Ein bitweises OR von Flags. Die folgenden Flags sind gültig für die OID_RECEIVE_FILTER_SET_FILTER OID.
Wert | Bedeutung |
---|---|
|
Wenn dieses Flag festgelegt ist, darf der Netzwerkadapter nur empfangene Pakete angeben, die die folgenden Kriterien erfüllen:
Hinweis Wenn ein überlastender Treiber einen MAC-Adressfilter und einen VLAN-Bezeichnerfilter mit einer OID-Anforderung von OID_RECEIVE_FILTER_SET_FILTER festlegt, legt er dieses Flag in keinem der Filterfelder fest. In diesem Fall sollte der Miniporttreiber Pakete angeben, die sowohl der angegebenen MAC-Adresse als auch dem VLAN-Bezeichner entsprechen. Das heißt, der Miniporttreiber sollte keine Pakete mit einer übereinstimmenden MAC-Adresse angeben, die einen VLAN-Bezeichner null aufweisen oder nicht markierte Pakete sind.
|
FrameHeader
Der Headertyp im Netzwerkdatenrahmen.
ReceiveFilterTest
Der Typ des Tests, der für den Empfangsfilter ausgeführt werden soll.
HeaderField
Der Typ des Felds in einem Header. Der Feldtyp (z. B. NDIS_MAC_HEADER_FIELD) entspricht dem Typ des Headers, der im FrameHeader-Element angegeben ist.
Diese Union enthält die folgenden Elemente:
HeaderField.MacHeaderField
Der Feldtyp in einem MAC-Header.
HeaderField.ArpHeaderField
Der Feldtyp in einem ARP-Header (Address Resolution Protocol).
HeaderField.IPv4HeaderField
Ein NDIS_IPV4_HEADER_FIELD Enumerationswert, der den Typ des Felds in einem IPv4-Header (IP Version 4) angibt.
HeaderField.IPv6HeaderField
Ein NDIS_IPV6_HEADER_FIELD Enumerationswert, der den Typ des Felds in einem IPv6-Header (IP Version 6) angibt.
HeaderField.UdpHeaderField
Der Feldtyp in einem UDP-Header (User Datagram Protocol).
_HEADER_FIELD
FieldValue
Der Wert, den der Miniportadapter mit dem entsprechenden Headerfeldwert in eingehenden Paketen vergleicht. Die Position des Headerfeldwerts wird durch den Feldtyp bestimmt, der im HeaderField-Element angegeben ist.
Weitere Informationen finden Sie im Abschnitt mit Hinweisen.
Diese Union enthält die folgenden Elemente:
FieldValue.FieldByteValue
Ein UCHAR-Wert , der mit einem Feld in einem Netzwerkpaket verglichen werden soll.
FieldValue.FieldShortValue
Ein USHORT-Wert , der mit einem Feld in einem Netzwerkpaket verglichen werden soll.
FieldValue.FieldLongValue
Ein ULONG-Wert , der mit einem Feld in einem Netzwerkpaket verglichen werden soll.
FieldValue.FieldLong64Value
Ein ULONG64 Wert, der mit einem Feld in einem Netzwerkpaket verglichen werden soll.
FieldValue.FieldByteArrayValue[16]
Ein UCHAR-Array , das mit einem Feld in einem Netzwerkpaket verglichen werden soll.
_FIELD_VALUE
ResultValue
Eine Union, die einen Testergebniswert enthält.
Wenn das ReceiveFilterTest-Element auf NdisReceiveFilterTestMaskEqual festgelegt ist, berechnet der Netzwerkadapter zunächst ein Ergebnis aus dem Wert im FieldValue-Element und dem Headerfeldwert, wie vom HeaderField-Member angegeben. Anschließend vergleicht der Adapter das berechnete Ergebnis mit ResultValue.
Weitere Informationen finden Sie im Abschnitt mit Hinweisen.
Diese Union enthält die folgenden Elemente:
ResultValue.ResultByteValue
Ein UCHAR-Wert , der mit einem Testergebnis verglichen werden soll.
ResultValue.ResultShortValue
Ein USHORT-Wert , der mit einem Testergebnis verglichen werden soll.
ResultValue.ResultLongValue
Ein ULONG-Wert , der mit einem Testergebnis verglichen werden soll.
ResultValue.ResultLong64Value
Ein ULONG64 Wert, der mit einem Testergebnis verglichen werden soll.
ResultValue.ResultByteArrayValue[16]
Ein UCHAR-Array , das mit einem Testergebnis verglichen werden soll.
_RESULT_VALUE
Hinweise
Die NDIS_RECEIVE_FILTER_FIELD_PARAMETERS-Struktur gibt das Filtertestkriterium für ein Feld in einem möglichen Array von Feldtests an, die mit dem NDIS_RECEIVE_FILTER_PARAMETERS Struktur.
In der folgenden Tabelle wird beschrieben, wie der Netzwerkadapter die Member ReceiveFilterTest, FieldValue und ResultValue verwendet, um einen Filtertest für den angegebenen Headerfeldwert eines empfangenen Pakets durchzuführen.
ReceiveFilterTest-Wert | Vom Netzwerkadapter durchgeführter Filtertest |
---|---|
NdisReceiveFilterTestEqual | (<Headerfeldwert> == FieldValue) |
NdisReceiveFilterTestMaskEqual | ((<Headerfeldwert> & FieldValue) == ResultValue) |
NdisReceiveFilterTestNotEqual | (<Headerfeldwert> != FieldValue) |
- Für NDIS 6.20 muss der Miniporttreiber eine fehlerhafte status für die OID-Anforderung von OID_RECEIVE_FILTER_SET_FILTER zurückgeben.
-
Wenn ab NDIS 6.30 das flag NDIS_RECEIVE_FILTER_FIELD_MAC_HEADER_VLAN_UNTAGGED_OR_ZERO nicht festgelegt ist und kein VLAN-Bezeichnerfilter durch die OID_RECEIVE_FILTER_SET_FILTER-Methodenanforderung konfiguriert ist, muss der Miniporttreiber eine der folgenden Aktionen ausführen:
- Der Miniporttreiber muss eine fehlerhafte status für die OID_RECEIVE_FILTER_SET_FILTER-Methodenanforderung zurückgeben.
- Der Miniporttreiber muss den Netzwerkadapter konfigurieren, um die angegebenen MAC-Adressfelder zu überprüfen und zu filtern. Wenn im empfangenen Paket ein VLAN-Tag vorhanden ist, muss es vom Netzwerkadapter aus den Paketdaten entfernt werden. Der Miniporttreiber muss das VLAN-Tag in einer NDIS_NET_BUFFER_LIST_8021Q_INFO platzieren, die der NET_BUFFER_LIST Struktur des Pakets zugeordnet ist.
-
Der Miniporttreiber muss den Netzwerkadapter so konfigurieren, dass die angegebenen MAC-Adress- und VLAN-Bezeichnerfelder überprüft und gefiltert werden.
Wenn im empfangenen Paket ein VLAN-Tag vorhanden ist, muss es vom Netzwerkadapter aus den Paketdaten entfernt werden. Der Miniporttreiber muss das VLAN-Tag in einer NDIS_NET_BUFFER_LIST_8021Q_INFO platzieren, die der NET_BUFFER_LIST Struktur des Pakets zugeordnet ist.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Unterstützt in NDIS 6.20 und höher. |
Kopfzeile | ntddndis.h (include Ndis.h) |
Weitere Informationen
NDIS_RECEIVE_FILTER_PARAMETERSFeedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für