Freigeben über


Starten eines Filtermoduls

Um ein angehaltenes Filtermodul zu starten, ruft NDIS ggf. die FilterSetModuleOptions-Funktion des Filtertreibers auf, gefolgt von einem Aufruf der FilterRestart-Funktion . Das Filtermodul wechselt zu Beginn der Ausführung in der FilterRestart-Funktion in den Status Neustart.

Wenn der Treiber einen Einstiegspunkt für FilterSetModuleOptions bereitgestellt hat, kann der Treiber die Teileigenschaft für ein Filtermodul ändern. Weitere Informationen finden Sie unter Datenumgehungsmodus.

Wenn die FilterRestart-Funktion eines Filtertreibers aufgerufen wird, übergibt NDIS einen Zeiger auf eine NDIS_RESTART_ATTRIBUTES-Struktur , um den Treiber im RestartAttributes-Member der NDIS_FILTER_RESTART_PARAMETERS-Struktur zu filtern. Filtertreiber können die Neustartattribute ändern, die von zugrunde liegenden Treibern angegeben werden. Weitere Informationen zum Ändern von Neustartattributen finden Sie unter FilterRestart.

Hinweis NDIS ruft FilterSetModuleOptions für alle Filtermodule in einem Stapel auf, bevor NDIS die FilterRestart-Funktion für jedes Filtermodul im Stapel aufruft.

NDIS startet ein Filtermodul als Teil eines Plug & Play Vorgangs, um einen Treiberstapel neu zu starten. Eine Übersicht über den Neustart des Treiberstapels finden Sie unter Neustarten eines Treiberstapels.

Im Namen eines Filtermoduls, das sich im Status Neustart befindet , führt der Filtertreiber Folgendes aus:

  • Schließt alle Vorgänge ab, die zum Neustarten normaler Sende- und Empfangsvorgänge erforderlich sind.

    Weitere Informationen zu Sende- und Empfangsvorgängen finden Sie unter Filtern von Sende- und Empfangsvorgängen für Module.

  • Kann konfigurierbare Parameter für das Filtermodul lesen oder schreiben.

  • Kann Netzwerkdatenanzeigen empfangen. Der Treiber kann solche Daten kopieren und in die Warteschlange stellen und sie später an überlastende Treiber angeben, oder er kann die Daten verwerfen.

  • Sollte keine neuen Empfangsanzeigen initiieren.

  • Sollte alle neuen Sendeanforderungen an die FilterSendNetBufferLists-Funktion sofort ablehnen, indem die NdisFSendNetBufferListsComplete-Funktion aufgerufen wird. Es sollte die vollständige status in jedem NET_BUFFER_LIST auf NDIS_STATUS_PAUSED festgelegt werden.

  • Kann mit der NdisFIndicateStatus-Funktion status Anzeigen bereitstellen.

    Weitere Informationen zu status Anzeigen finden Sie unter Filtern von Modulstatusanzeigen.

  • Sollte OID-Anforderungen in der FilterOidRequest-Funktion verarbeiten.

    Weitere Informationen zu OID-Anforderungen finden Sie unter Filtern von Modul-OID-Anforderungen.

  • Sollte keine neuen Sendeanforderungen initiieren.

  • Sollte neue Empfangsanzeigen sofort an NDIS zurückgeben, indem die NdisFReturnNetBufferLists-Funktion aufgerufen wird. Bei Bedarf kann der Treiber solche Empfangshinweise kopieren, bevor er sie zurückgibt.

  • Kann OID-Anforderungen an die zugrunde liegenden Treiber senden, um aktualisierte Konfigurationsinformationen festzulegen oder abzufragen.

  • Sollte status Anzeigen in der FilterStatus-Funktion behandeln.

  • Sollte auf NDIS_STATUS_SUCCESS oder einen Fehler status hinweisen. Wenn ein Filtermodul nicht neu gestartet wird, trennt NDIS es, und wenn es sich um einen obligatorischen Filter handelt, beendet NDIS den gesamten Treiberstapel.

Nachdem der Filtertreiber die Sende- und Empfangsvorgänge erfolgreich neu gestartet hat, muss er den Neustartvorgang abschließen. Der Filtertreiber kann den Neustartvorgang synchron oder asynchron abschließen, indem er NDIS_STATUS_SUCCESS bzw. NDIS_STATUS_PENDING aus FilterRestart zurückgibt.

Wenn der Treiber NDIS_STATUS_PENDING zurückgibt, muss er die NdisFRestartComplete-Funktion aufrufen, nachdem er den Neustartvorgang abgeschlossen hat. In diesem Fall übergibt der Treiber die letzte status des Neustartvorgangs an NdisFRestartComplete.

Nach Abschluss des Neustartvorgangs befindet sich das Filtermodul im Status Wird ausgeführt . Der Treiber setzt die normale Sende- und Empfangsverarbeitung fort.

NDIS initiiert keine anderen Plug & Play-Vorgänge, z. B. Anfügen, Trennen oder Anhalten von Anforderungen, während sich der Filtertreiber im Status Neustart befindet. NDIS kann Pausenanforderungen initiieren, nachdem sich ein Filtertreiber im Status Wird ausgeführt befindet. Weitere Informationen zum Anhalten eines Filtermoduls finden Sie unter Anhalten eines Filtermoduls.