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.
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 |
Feedback
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