NDIS_PD_SET_RECEIVE_FILTER Rückruffunktion (ndis.h)

Die PacketDirect-Plattform (PD) ruft die NdisPDSetReceiveFilter-Funktion eines PD-fähigen Miniporttreibers auf, um bestimmte Paketflüsse an eine bestimmte PD-Empfangswarteschlange weiterzuleiten.

Hinweis Sie müssen die Funktion mit dem NDIS_PD_SET_RECEIVE_FILTER-Typ deklarieren. Weitere Informationen finden Sie im folgenden Abschnitt Beispiele.

 

Syntax

NDIS_PD_SET_RECEIVE_FILTER NdisPdSetReceiveFilter;

NTSTATUS() NdisPdSetReceiveFilter(
  [in]  NDIS_PD_PROVIDER_HANDLE ProviderHandle,
  [in]  const NDIS_PD_FILTER_PARAMETERS *FilterParameters,
  [out] NDIS_PD_FILTER_HANDLE *FilterHandle
)
{...}

Parameter

[in] ProviderHandle

Ein Anbieterhandle, das das Anbieterobjekt des PD-fähigen Miniporttreibers identifiziert.

[in] FilterParameters

Parameter, die alle erforderlichen Informationen für den Filter identifizieren. Weitere Informationen finden Sie in der NDIS_PD_FILTER_PARAMETERS-Struktur .

[out] FilterHandle

Ein Handle für den Filter.

Rückgabewert

Diese Funktion gibt STATUS_SUCCESS zurück, wenn sie erfolgreich abgeschlossen ist, andernfalls wird der entsprechende Fehlercode zurückgegeben.

Hinweise

PD-Filter werden angewendet, bevor eine Verteilung stattfindet. Aus diesem Grund können Pakete, die einem PD-Filter entsprechen, in der dedizierten PD-Warteschlange platziert werden, und der Rest der Pakete kann wie gewohnt per RSS verteilt werden. Der PD-Client ist für die Installation nicht überlappender mehrdeutiger Filter verantwortlich. Einige PD-Funktionen können jedoch überlappende mehrdeutige Filter zulassen, solange der PD-Client einen Prioritätswert übergeben kann, der angibt, welcher Filter zuerst angewendet werden muss. Der PD-Anbieter schlägt möglicherweise Filtersatzanforderungen mit STATUS_NOT_SUPPORTED fehl, wenn der Client versucht, Filter mit in Konflikt stehenden Profilen oder überlappenden Übereinstimmungsbedingungen festzulegen. Die NDIS_PD_CAPABILITIES-Struktur erlaubt es dem Anbieter nicht, alle gültigen Kombinationen von Profilen anzukündigen, die der PD-Client gleichzeitig verwenden kann. Aus diesem Grund werden einige der Funktionen vom PD-Client zur Laufzeit erkannt, wenn und wenn der PD-Anbieter die Filtersatzanforderung mit STATUS_NOT_SUPPORTED

Beispiele

Um eine NdisPDSetReceiveFilter-Funktion zu definieren, müssen Sie zunächst eine Funktionsdeklaration bereitstellen, die den Typ der zu definierenden Funktion identifiziert. Windows stellt eine Reihe von Funktionstypen für Treiber bereit. Das Deklarieren einer Funktion mithilfe der Funktionstypen hilft der Codeanalyse für Treiber, der statischen Treiberüberprüfung (Static Driver Verifier , SDV) und anderen Überprüfungstools, Fehler zu finden, und es ist eine Anforderung zum Schreiben von Treibern für das Windows-Betriebssystem.

Um beispielsweise eine NdisPDSetReceiveFilter-Funktion mit dem Namen "MyPDSetReceiveFilter" zu definieren, verwenden Sie den typ NDIS_PD_SET_RECEIVE_FILTER , wie in diesem Codebeispiel gezeigt:

NDIS_PD_SET_RECEIVE_FILTER MyPDSetReceiveFilter;

Implementieren Sie dann Ihre Funktion wie folgt:

_Use_decl_annotations_
VOID
 MyPDSetReceiveFilter(
    NDIS_PD_PROVIDER_HANDLE  ProviderHandle,
    CONST NDIS_PD_FILTER_PARAMETERS*  FilterParameters,
    NDIS_PD_FILTER_HANDLE*  FilterHandle
    )
  {...}

Der NDIS_PD_SET_RECEIVE_FILTER Funktionstyp ist in der Headerdatei Ntddndis.h definiert. Um Fehler beim Ausführen der Codeanalysetools genauer zu identifizieren, fügen Sie der Funktionsdefinition die Use_decl_annotations Anmerkung hinzu. Die Use_decl_annotations Anmerkung stellt sicher, dass die Anmerkungen verwendet werden, die auf den NDIS_PD_SET_RECEIVE_FILTER Funktionstyp in der Headerdatei angewendet werden. Weitere Informationen zu den Anforderungen für Funktionsdeklarationen finden Sie unter Deklarieren von Funktionen mithilfe von Funktionsrollentypen für NDIS-Treiber.

Informationen zu Use_decl_annotations finden Sie unter Verhalten von Funktionen mit Anmerkungen.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 10
Unterstützte Mindestversion (Server) Windows Server 2016
Zielplattform Windows
Kopfzeile ndis.h
IRQL PASSIVE_LEVEL