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:

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.

Hinweis Miniporttreiber, die die NDIS-Paketkopplung oder die SR-IOV-Schnittstelle unterstützen, müssen den QueueId-Member auf NDIS_DEFAULT_RECEIVE_QUEUE_ID festlegen.
 

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.

Hinweis Wenn FieldParametersArrayNumElements auf 0 festgelegt ist, wird dieser Member ignoriert.
 

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.

Hinweis Miniporttreiber, die keine NDIS-Paketkopplung unterstützen, müssen diesen Member ignorieren.
 

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.

Hinweis Dieser Member ist nur für die SR-IOV-Schnittstelle gültig.
 

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_OBJECT_HEADER

NDIS_RECEIVE_FILTER_FIELD_PARAMETERS

NET_BUFFER_LIST

OID_RECEIVE_FILTER_PARAMETERS

OID_RECEIVE_FILTER_SET_FILTER