NDIS_RECEIVE_FILTER_PARAMETERS-Struktur (ntddndis.h)
Die NDIS_RECEIVE_FILTER_PARAMETERS-Struktur gibt die Parameter für einen NDIS-Empfangsfilter an.
NDIS-Empfangsfilter werden in den folgenden NDIS-Schnittstellen verwendet:
-
NDIS Packet Coalescing. Weitere Informationen zur Verwendung von Empfangsfiltern in dieser Technologie finden Sie unter Verwalten von Paketkopplungs-Empfangsfiltern.
-
Single Root-E/A-Virtualisierung (SR-IOV) Weitere Informationen zur Verwendung von Empfangsfiltern in dieser Technologie 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_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;
Member
Header
Die NDIS_OBJECT_HEADER-Struktur für die NDIS_RECEIVE_FILTER_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_PARAMETERS-Struktur anzugeben, legt der Treiber den Revisionsmember auf einen der folgenden Werte fest:
NDIS_RECEIVE_FILTER_PARAMETERS_REVISION_2
Die Member VPortId und MaxCoalescingDelay für NDIS 6.30 wurden hinzugefügt.
Der Treiber legt das Element Größe auf NDIS_SIZEOF_RECEIVE_FILTER_PARAMETERS_REVISION_2 fest.
NDIS_RECEIVE_FILTER_PARAMETERS_REVISION_1
Ursprüngliche Version für NDIS 6.20.
Der Treiber legt das Element Größe auf NDIS_SIZEOF_RECEIVE_FILTER_PARAMETERS_REVISION_1 fest.
Flags
Ein bitweiser OR der folgenden Flags.
Version | Wert | Bedeutung |
---|---|---|
NDIS 6.50 und höher | NDIS_RECEIVE_FILTER_PACKET_ENCAPSULATION 0x00000002 | Wenn dieses Flag für den Empfangsfilter festgelegt ist, muss der Netzwerkadapter mit dieser MAC-Adresse im inneren Ethernet-Frame in gekapselten Paketen übereinstimmen. |
NDIS 6.20 bis NDIS 6.40 | NDIS_RECEIVE_FILTER_PACKET_ENCAPSULATION_GRE 0x00000002 | Wenn dieses Flag für den Empfangsfilter festgelegt ist, muss der Netzwerkadapter mit dieser MAC-Adresse im inneren Ethernet-Frame in GRE-gekapselten Paketen übereinstimmen. |
FilterType
Der Typ des Empfangsfilters.
QueueId
Ein Empfangswarteschlangenbezeichner. Dieser Bezeichner ist eine ganze Zahl zwischen null und der Anzahl von Warteschlangen, die der Netzwerkadapter unterstützt. Der Wert NDIS_DEFAULT_RECEIVE_QUEUE_ID gibt die Standard-Empfangswarteschlange an.
FilterId
Ein Empfangsfilterbezeichner. Der Filterbezeichner ist eine ganze Zahl von 1 bis zur Anzahl von Empfangsfiltern, die der Netzwerkadapter unterstützt. Ein Wert von null ist ungültig.
FieldParametersArrayOffset
Der Offset in Bytes auf das erste Element in einem Array von Elementen, die dieser Struktur folgen. Der Offset wird vom Anfang der NDIS_RECEIVE_FILTER_PARAMETERS-Struktur bis zum Anfang des ersten Elements gemessen. Jedes Element im Array ist eine NDIS_RECEIVE_FILTER_FIELD_PARAMETERS Struktur.
FieldParametersArrayNumElements
Die Anzahl der Elemente im Array.
FieldParametersArrayElementSize
Die Größe jedes Elements im Array in Bytes.
RequestedFilterIdBitCount
Die Anzahl der Bits in einem Filterbezeichner. Der Miniporttreiber verwendet diese Anzahl von Bits für den Filterbezeichner in den OOB-Daten ( NetBufferListFilteringInfo ) in NET_BUFFER_LIST Strukturen. Wenn dieser Member 0 ist, darf ein Miniporttreiber den Filterbezeichner in den OOB NetBufferListFilteringInfo-Daten nicht angeben.
Ab NDIS 6.20 muss dieser Member auf 0 festgelegt werden.
MaxCoalescingDelay
Die maximale Zeit in Millisekunden, in der das erste Paket, das diesem Empfangsfilter entspricht, im Hardware-Koalescingpuffer auf dem Netzwerkadapter gespeichert wird.
Sobald das erste Paket, das dem Filter entspricht, empfangen wird, wird das Paket vom Netzwerkadapter vereint. Der Adapter startet auch einen Hardwaretimer, dessen Ablaufzeit auf den Wert des MaxCoalescingDelay-Elements festgelegt ist. Zusätzliche Pakete, die demselben Filter entsprechen, müssen vom Adapter zusammengelöst werden, ohne den Hardwaretimer zurückzusetzen und neu zu starten.
Wenn der Hardwaretimer abläuft, muss der Adapter einen Empfangs-Interrupt generieren, um dem Host eine Signalisierung über zusammengelöste Pakete zu geben, die dem Empfangsfilter entsprechen.
VPortId
Der VPort-Bezeichner, für den der Empfangsfilter konfiguriert werden soll. Der Wert NDIS_DEFAULT_VPORT_ID den Standard-VPort angibt, der an die PCIe-Funktion (PCI Express) (PF) des Netzwerkadapters angefügt ist.
Hinweise
Die NDIS_RECEIVE_FILTER_PARAMETERS-Struktur wird mit OID-Anforderungen von verwendet.
OID_RECEIVE_FILTER_PARAMETERS und
OID_RECEIVE_FILTER_SET_FILTER. Diese OID-Anforderungen geben die Konfigurationsparameter eines Filters an. Eine Filterspezifikation kann Tests für mehrere Felder in einem Netzwerkpaket enthalten.
Die Elemente FieldParametersArrayOffset, FieldParametersArrayNumElements und FieldParametersArrayElementSize der NDIS_RECEIVE_FILTER_PARAMETERS Struktur definieren ein Array von NDIS_RECEIVE_FILTER_FIELD_PARAMETERS Strukturen. Jede NDIS_RECEIVE_FILTER_FIELD_PARAMETERS Struktur im Array legt das Filtertestkriterium für ein Feld in einem Netzwerkheader fest.
Der Netzwerkadapter kombiniert die Ergebnisse aller Feldtests mit einem logischen AND-Vorgang. Das heißt, wenn ein Feldtest, der im Array der NDIS_RECEIVE_FILTER_FIELD_PARAMETERS-Strukturen enthalten ist, fehlschlägt, erfüllt das Netzwerkpaket das angegebene Filterkriterium nicht.
Wenn ein Netzwerkadapter ein empfangenes Paket anhand dieser Filterkriterien testet, muss er alle Felder im Paket ignorieren, in denen kein Testkriterium angegeben ist.
Wenn das Paket das Filterkriterium erfüllt, muss der Netzwerkadapter eine der folgenden Aktionen ausführen:
-
Wenn der Netzwerkadapter das NDIS-Empfangspaket-Koalescing unterstützt, muss der Adapter das Paket, das dem Filter entspricht, zusammenfügen. Der Adapter muss auch empfangene Pakete zusammenfügen, die mit denselben oder unterschiedlichen Empfangsfiltern übereinstimmen. Der Adapter muss die Generierung des Empfangsunterbrechungs zurückhalten, bis ein anderes Hardwareereignis auftritt, z. B. folgendes:
- Der Ablauf eines Hardwaretimers, dessen Ablaufzeit auf den Wert des MaxCoalescingDelay-Elements festgelegt ist.
- Der verfügbare Platz innerhalb des Hardware-Koalescingpuffers erreicht eine adapterspezifische Niedrigwassermarke.
Weitere Informationen finden Sie unter Handling Packet Coalescing Receive Filters.For more information, see Handling Packet Coalescing Receive Filters.
-
Wenn der Netzwerkadapter die SR-IOV-Schnittstelle unterstützt, sollte der Adapter das Paket an die Empfangswarteschlange eines standard- oder nicht standardmäßigen VPorts weiterleiten. Die Empfangswarteschlange wird durch das QueueId-Element angegeben, und der VPort wird vom VPortId-Member angegeben.
Hinweis Ab Windows Server 2012 unterstützt die SR-IOV-Schnittstelle nur die Standard-Empfangswarteschlange für standardbasierte und nicht standardmäßige VPorts. Die Standard-Empfangswarteschlange wird durch Festlegen des QueueId-Members auf NDIS_DEFAULT_RECEIVE_QUEUE_ID angegeben.
- Wenn der Netzwerkadapter die VMQ-Schnittstelle unterstützt, sollte der Adapter das Paket an die Vom QueueId-Member angegebene Empfangswarteschlange weiterleiten.
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_FIELD_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