Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Ein übermäßiger Treiber gibt eine OID-Methodenanforderung von OID_RECEIVE_FILTER_SET_FILTER aus, um einen Filter auf einem Netzwerkadapter festzulegen.
Das InformationBuffer Member der NDIS_OID_REQUEST-Struktur enthält einen Zeiger auf einen vom Aufrufer zugewiesenen Puffer. Dieser Puffer ist so formatiert, dass er Folgendes enthält:
Eine NDIS_RECEIVE_FILTER_PARAMETERS Struktur, die die Parameter für einen NDIS-Empfangsfilter angibt.
Ein Array von NDIS_RECEIVE_FILTER_FIELD_PARAMETERS Strukturen, die das Filtertestkriterium für ein Feld in einem Netzwerkpaketheader angibt.
Nach einer erfolgreichen Rückgabe aus der OID-Methodenanforderung enthält das InformationBuffer- Element der NDIS_OID_REQUEST-Struktur einen Zeiger auf eine NDIS_RECEIVE_FILTER_PARAMETERS Struktur. Wenn der überlastende Treiber einen neuen Empfangsfilter erstellt, aktualisiert NDIS diese Struktur mit einem neuen Filterbezeichner.
Bemerkungen
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 I/O Virtualization (SR-IOV). Weitere Informationen zur Verwendung von Empfangsfiltern in dieser Schnittstelle finden Sie unter Festlegen eines Empfangsfilters für einen virtuellen Port.
VMQ(Virtual Machine Queue). Weitere Informationen zur Verwendung von Empfangsfiltern in dieser Schnittstelle finden Sie unter Einstellung und Löschen von VMQ-Filtern.
Die OID-Methodenanforderung von OID_RECEIVE_FILTER_SET_FILTER ist für Miniporttreiber erforderlich, die die NDIS-Paketkopplung, SR-IOV- oder VMQ-Schnittstelle unterstützen.
Der übersteigende Treiber initialisiert die NDIS_RECEIVE_FILTER_PARAMETERS Struktur mit der angeforderten Filterkonfiguration. NDIS weist dem FilterId Member der NDIS_RECEIVE_FILTER_PARAMETERS Struktur einen Filterbezeichner zu und übergibt die Methodenanforderung an den zugrunde liegenden Miniporttreiber.
Jeder Filter, der für eine Empfangswarteschlange festgelegt ist, verfügt über einen eindeutigen Filterbezeichner für einen Netzwerkadapter. Das heißt, die Filterbezeichner werden nicht in verschiedenen Warteschlangen dupliziert, die der Netzwerkadapter verwaltet. Wenn NDIS eine OID-Anforderung empfängt, um einen Filter für eine Empfangswarteschlange festzulegen, überprüft es die Filterparameter. Nachdem NDIS die erforderlichen Ressourcen und den Filterbezeichner zugeordnet hat, sendet sie die OID-Anforderung an den zugrunde liegenden Netzwerkadapter. Wenn der Netzwerkadapter die erforderlichen Software- und Hardwareressourcen für den Filter erfolgreich zuordnen kann, wird die OID-Anforderung mit einem Rückgabestatus von NDIS_STATUS_SUCCESS abgeschlossen.
Hinweis Ab NDIS 6.30 wird der Empfangenfilter für Pakete nur in der Standard-Empfangswarteschlange des Netzwerkadapters unterstützt. Diese Empfangswarteschlange weist einen Bezeichner von NDIS_DEFAULT_RECEIVE_QUEUE_ID auf.
Der Miniporttreiber muss die Filterbezeichner für die zugewiesenen Empfangsfilter beibehalten. NDIS verwendet den Bezeichner eines Filters in späteren OID-Anforderungen, um die Empfangsfilterparameter zu ändern oder den Empfangsfilter zu löschen.
Nachdem ein Miniporttreiber eine OID_RECEIVE_FILTER_QUEUE_ALLOCATION_COMPLETE Anforderung empfängt und filtert, die in der Warteschlange festgelegt sind, befindet sich die Warteschlange im Zustand "Ausführen". In diesem Zustand kann der Miniporttreiber Hinweise auf Pakete in der Warteschlange starten, indem NdisMIndicateReceiveNetBufferListsaufgerufen wird.
Zusätzliche Richtlinien für die SR-IOV-Schnittstelle
Die folgenden Punkte gelten für Miniporttreiber, die die SR-IOV Schnittstelle unterstützen:
Für die SR-IOV-Schnittstelle wird eine Empfangswarteschlange auf einem standardmäßigen oder nicht standardmäßigen virtuellen Port (VPort) erstellt.
Hinweis Ab Windows Server 2012 unterstützt die SR-IOV schnittstelle nur die Standard-Empfangswarteschlange eines VPorts.
Nachdem ein SR-IOV VPort über eine OID-Set-Anforderung von OID_NIC_SWITCH_CREATE_VPORTzugewiesen wurde, können Überlyingtreiber Filter auf den VPort mit OID-Anforderungen von OID_RECEIVE_FILTER_SET_FILTER festlegen.
Hinweis Nur der überlastende Treiber, der dem VPort zugeordnet wurde, kann einen Filter für diesen VPort festlegen.
Da der Standard-VPort immer vorhanden ist, können übermäßig vorhandene Treiber immer einen Filter für den Standard-VPort festlegen.
Wenn der VPort erstellt wird, werden keine Empfangsfilter festgelegt. In diesem Fall darf der Miniporttreiber keine Empfangenpakete auf diesem VPort angeben, bevor der Miniporttreiber eine OID-Anforderung von OID_RECEIVE_FILTER_SET_FILTER für den VPort empfängt. Nachdem diese OID-Anforderung ausgestellt wurde, kann der Miniporttreiber Pakete auf diesem VPort angeben.
Hinweis Wenn der Miniporttreiber Pakete auf einem VPort angibt, während eine OID-Anforderung von OID_RECEIVE_FILTER_SET_FILTER verarbeitet wird, muss sie die OID-Anforderung abschließen und einen NDIS_STATUS_SUCCESS Statuscode zurückgeben.
Zusätzliche Richtlinien für die VMQ-Schnittstelle
Die folgenden Punkte gelten für Miniporttreiber, die die VMQ-Schnittstelle unterstützen:
Nachdem eine VMQ-Empfangswarteschlange zugewiesen wurde, können übermäßig große Treiber Filter für die Empfangswarteschlange mit OID-Anforderungen von OID_RECEIVE_FILTER_SET_FILTER festlegen.
Hinweis Nur der Protokolltreiber, der eine Empfangswarteschlange zugewiesen hat, kann einen Filter für diese Warteschlange festlegen.
Da die Standardwarteschlange immer vorhanden ist, können übermäßig vorhandene Treiber immer einen Filter für die Standardwarteschlange festlegen. Wenn der Netzwerkadapter eine Drop-Warteschlange unterstützt, können Überleitungstreiber einen Filter für die Drop-Warteschlange festlegen.
Überlastungstreiber besitzen nicht die Standard- oder Ablagewarteschlangen. Daher verwenden alle Protokolltreiber, die an einen Netzwerkadapter gebunden sind, die Standard- oder Drop-Warteschlange.
Wenn die Empfangswarteschlange erstellt wird, werden keine Empfangsfilter festgelegt. In diesem Fall darf der Miniporttreiber keine Empfangspakete für diese Empfangswarteschlange angeben, bevor der Miniporttreiber eine OID-Anforderung von OID_RECEIVE_FILTER_SET_FILTER für die Empfangswarteschlange empfängt. Nachdem diese OID-Anforderung ausgestellt wurde, kann der Miniporttreiber Pakete in dieser Empfangswarteschlange angeben.
Hinweis Wenn der Miniporttreiber Pakete in einer Warteschlange angibt, während eine OID-Anforderung von OID_RECEIVE_FILTER_SET_FILTER verarbeitet wird, muss sie die OID-Anforderung abschließen und einen NDIS_STATUS_SUCCESS Statuscode zurückgeben.
Rückgabestatuscodes
Der Miniporttreiber gibt einen der folgenden Statuscodes für die OID-Methodenanforderung von OID_RECEIVE_FILTER_SET_FILTER zurück:
NDIS_STATUS_SUCCESS
Der Filter wurde erfolgreich für die Warteschlange festgelegt. Der Informationspuffer enthält die aktualisierte NDIS_RECEIVE_FILTER_PARAMETERS Struktur.
NDIS_STATUS_PENDING
Die Anforderung steht aus. Der endgültige Statuscode und die Ergebnisse werden an den OID-Anforderungsabschlusshandler des Aufrufers übergeben.
NDIS_STATUS_INVALID_PARAMETER
Mindestens einer der Parameter, die der bereitgestellte Überlauftreiber ist ungültig.
NDIS_STATUS_INVALID_LENGTH
Der Informationspuffer war zu kurz. NDIS legt die DATA fest. METHOD_INFORMATION. BytesNeededed Member in der NDIS_OID_REQUEST Struktur auf die erforderliche Mindestpuffergröße.
NDIS_STATUS_NOT_SUPPORTED
Die NDIS-Version des Miniporttreibers ist eine frühere Version als 6.20.
NDIS_STATUS_FAILURE
Fehler bei der Anforderung aus anderen Gründen.
Anforderungen
Version |
Unterstützt in NDIS 6.20 und höher. |
Kopfball |
Ntddndis.h (include Ndis.h) |
Siehe auch
NdisMIndicateReceiveNetBufferLists
NDIS_RECEIVE_FILTER_PARAMETERS
NET_BUFFER_LIST_RECEIVE_FILTER_ID