FILTER_PAUSE Rückruffunktion (ndis.h)
NDIS ruft die FilterPause Funktion eines Filtertreibers auf, um einen Pausenvorgang für das angegebene Filtermodul zu initiieren.
Syntax
FILTER_PAUSE FilterPause;
NDIS_STATUS FilterPause(
[in] NDIS_HANDLE FilterModuleContext,
[in] PNDIS_FILTER_PAUSE_PARAMETERS PauseParameters
)
{...}
Parameter
[in] FilterModuleContext
Ein Handle zum Kontextbereich für das Filtermodul, das vom Filtertreiber angehalten werden soll. Der Filtertreiber hat diesen Kontextbereich in der FilterAttach-Funktion erstellt und initialisiert.
[in] PauseParameters
Ein Zeiger auf einen NDIS_FILTER_PAUSE_PARAMETERS Struktur, die die Pausenparameter für das Filtermodul definiert.
Rückgabewert
NDIS-Treiber können keine Pausenanforderung versagen. Der Filtertreiber sollte die NdisWriteEventLogEntry Funktion zusammen mit Parametern aufrufen, die den Grund für fehler angeben, die auftreten.
Rückgabecode | Beschreibung |
---|---|
|
FilterPause das angegebene Filtermodul erfolgreich angehalten. |
|
Der Filtertreiber schließt die Anforderung asynchron mit einem Aufruf der NdisFPauseComplete--Funktion ab. |
Bemerkungen
FilterPause ist eine erforderliche Funktion. NDIS kann FilterPause- aufrufen, wenn sich das Filtermodul im Zustand Running befindet. Das Filtermodul wechselt zu Beginn der Ausführung in der FilterPause Funktion in den Zustand Anhalten Zustands.
Ein Filtertreiber führt die folgenden Vorgänge aus, wenn NDIS FilterPause-aufruft:
- Muss die NdisFSendNetBufferListsComplete Funktion für alle in die Warteschlange eingereihten Sendepuffer, die ein übermäßiger Treiber erstellt hat.
- Muss die NdisFReturnNetBufferLists Funktion für alle in die Warteschlange eingereihten Empfangspuffer, die ein zugrunde liegender Treiber erstellt hat.
- Muss warten, bis NDIS alle ausstehenden Sendeanforderungen zurückgibt, die der Treiber an den FilterSendNetBufferListsComplete Funktion.
- Muss warten, bis NDIS alle ausstehenden Empfangsanzeigen zurückgibt, dass der Treiber auf den FilterReturnNetBufferLists Funktion.
Im Anhalten oder Angehaltenen Zuständen sollte ein Filtertreiber weiterhin OID-Anforderungen oder Statusanzeigen verarbeiten. Der Treiber sollte Aufrufe an seine FilterSendNetBufferLists Funktion. Der Fahrer kann Anrufe an seine FilterReceiveNetBufferLists Funktion. Der Treiber kann jedoch keine Puffer übergeben, die er erstellt hat. Der Fahrer darf keine Hinweise erhalten oder Anfragen senden.
Im Angehaltenen Zustand darf das Filtermodul keine Sendeanforderungen oder Empfangsanzeigen generieren.
NDIS ruft die FilterRestart--Funktion auf, um eine Neustartanforderung für ein Filtermodul zu initiieren, das sich im Zustand Angehaltenen befindet.
NDIS ruft FilterPause- bei IRQL = PASSIVE_LEVEL auf.
beispiele für
Um eine FilterPause--Funktion zu definieren, müssen Sie zuerst eine Funktionsdeklaration bereitstellen, die den Typ der Funktion identifiziert, die Sie definieren. Windows stellt eine Reihe von Funktionstypen für Treiber bereit. Durch das Deklarieren einer Funktion mithilfe der Funktionstypen können Codeanalyse für Treiber, statische Treiberüberprüfung (SDV) und andere Überprüfungstools Fehler finden, und es ist eine Anforderung zum Schreiben von Treibern für das Windows-Betriebssystem.Um beispielsweise eine FilterPause-Funktion zu definieren, die den Namen "MyPause" hat, verwenden Sie den FILTER_PAUSE Typ, wie in diesem Codebeispiel gezeigt:
FILTER_PAUSE MyPause;
Implementieren Sie dann Ihre Funktion wie folgt:
_Use_decl_annotations_
NDIS_STATUS
MyPause(
NDIS_HANDLE FilterModuleContext,
PNDIS_FILTER_PAUSE_PARAMETERS FilterPauseParameters
)
{...}
Der FILTER_PAUSE Funktionstyp wird in der Ndis.h-Headerdatei definiert. Um Fehler genauer zu identifizieren, wenn Sie die Codeanalysetools ausführen, müssen Sie der Funktionsdefinition die Use_decl_annotations Anmerkung hinzufügen. Die Use_decl_annotations Anmerkung stellt sicher, dass die Anmerkungen, die auf den Funktionstyp FILTER_PAUSE in der Headerdatei angewendet werden, verwendet 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_annotationsfinden Sie unter Annotating Function Behavior.
Anforderungen
Anforderung | Wert |
---|---|
mindestens unterstützte Client- | Unterstützt in NDIS 6.0 und höher. |
Zielplattform- | Fenster |
Header- | ndis.h (include Ndis.h) |
IRQL- | PASSIVE_LEVEL |