Anfügen eines Filtermoduls

Um den Vorgang zum Einfügen eines Filtermoduls in einen Treiberstapel zu initiieren, ruft NDIS die FilterAttach-Funktion eines Filtertreibers auf. Zu Beginn der Ausführung in der FilterAttach-Funktion wechselt das Filtermodul in den Anfügenden Zustand. Weitere Informationen zum Anfügen eines Filtermoduls an einen Treiberstapel finden Sie unter Starten eines Treiberstapels.

Ein Filtertreiber verwendet das Handle, das NDIS am NdisFilterHandle-Parameter von FilterAttach in allen zukünftigen NdisXxx-Funktionsaufrufen übergibt, die auf dieses Filtermodul verweisen. Zu diesen Funktionen gehören status Anzeigen, Senden von Anforderungen, Empfangsanzeigen und OID-Anforderungen.

Während sich ein Filtermodul im Anfügen-Zustand befindet, ist der Treiber wie folgt:

  • Erstellt einen Kontextbereich für das Filtermodul und ordnet Pufferpools und andere modulspezifische Filterressourcen zu. Weitere Informationen zu Pufferpools finden Sie unter FilterTreiberpufferverwaltung.

  • Ruft die NdisFSetAttributes-Funktion mithilfe des NdisFilterHandle-Werts auf, den NDIS an FilterAttach übergeben hat. Der FilterModuleContext-Parameter von NdisFSetAttributes gibt den Kontextbereich des Filtertreibers für dieses Filtermodul an. NDIS übergibt diesen Kontextbereich an die FilterXxx-Funktionen des Filtertreibers.

  • Liest optional Konfigurationsparameter für dieses Filtermodul aus der Registrierung. Weitere Informationen finden Sie unter Zugreifen auf Konfigurationsinformationen für einen Filtertreiber.

  • Wenn die vorherigen Vorgänge erfolgreich abgeschlossen wurden, befindet sich das Filtermodul im Zustand Angehalten .

  • Wenn bei den vorherigen Vorgängen ein Fehler aufgetreten ist, muss der Filtertreiber alle Ressourcen freigeben, die er in der FilterAttach-Funktion zugeordnet hat, und das Filtermodul in den Status Getrennt zurückgeben.

  • Gibt NDIS_STATUS_SUCCESS oder einen geeigneten Fehlercode zurück. Wenn der Treiber einen Fehlercode zurückgibt, beendet NDIS den Treiberstapel.

Hinweis Die Registrierung kann ein Flag enthalten, das angibt, dass ein Filtermodul optional ist. Wenn ein optionales Filtermodul nicht angefügt wird, beendet NDIS den rest des Treiberstapels nicht.

Ein Filtertreiber kann keine Sendeanforderungen stellen, empfangene Daten angeben, OID-Anforderungen stellen oder status Angaben aus dem Anfügenden Zustand machen. Sende- und Empfangsvorgänge werden in den Status Wird ausgeführt und angehalten unterstützt. OID-Anforderungen und status Hinweise werden in den Status "Angehalten", "Neustarten", "Wird ausgeführt" und "Anhaltend" unterstützt.

NDIS ruft die FilterDetach-Funktion auf, um ein Filtermodul zu trennen, das NDIS mit FilterAttach angefügt hat. Weitere Informationen finden Sie unter Trennen eines Filtermoduls.