Delen via


Concepten van Filterbeheer

FilterBeheer (FltMgr.sys) is een door het systeem geleverd kernelmodusstuurprogramma dat functionaliteit implementeert en beschikbaar maakt die vaak vereist is in stuurprogramma's voor bestandssysteemfilters. Ontwikkelaars van bestandssysteemfilters kunnen FltMgr-functionaliteit vangebruiken om minifilterstuurprogramma's te schrijven stuurprogramma's die eenvoudiger kunnen worden ontwikkeld dan oudere stuurprogramma's voor bestandssysteemfilters. Het eindresultaat is een verkort ontwikkelingsproces en een hogere kwaliteit, krachtigere stuurprogramma's.

FltMgr wordt geïnstalleerd met Windows, maar wordt alleen actief wanneer een minifilterstuurprogramma wordt geladen. Het wordt gekoppeld aan de bestandssysteemstack van een doelvolume. Een minifilterstuurprogramma wordt indirect gekoppeld aan de bestandssysteemstack door zich te registreren bij FltMgr- voor de I/O-bewerkingen dat het minifilterstuurprogramma wil filteren.

Minifilters worden in een bepaalde volgorde gekoppeld. Het besturingssysteem bepaalt de volgorde van koppeling met behulp van laadvolgorde groepen en hoogtes. De koppeling van een minifilterstuurprogramma op een specifiek niveau op een bepaald volume wordt een instantie van het minifilterstuurprogramma genoemd.

De hoogte van een minifilter:

  • Zorgt ervoor dat het exemplaar van het minifilterstuurprogramma altijd op de juiste locatie wordt geladen ten opzichte van andere exemplaren van het minifilterstuurprogramma.
  • Bepaalt de volgorde waarin FltMgr het minifilterstuurprogramma aanroept om I/O te verwerken.

In de volgende afbeelding ziet u een vereenvoudigde I/O-stack met filterbeheer en drie minifilterstuurprogramma's.

diagram dat een vereenvoudigde I/O-stack illustreert met filterbeheer en drie minifilterstuurprogramma's.

Een minifilterstuurprogramma kan de volgende typen bewerkingen filteren:

  • IRP-gebaseerde I/O-bewerkingen
  • Snelle I/O-bewerkingen
  • Callbackbewerkingen voor bestandssysteemfilters (FSFilter)

Voor elk van de I/O-bewerkingen die worden gefilterd, kan een minifilter een callbackroutine voor vóórbewerking, een callbackroutine voor nabewerking, of beide registreren. Wanneer FltMgr een I/O-bewerking afhandelt, wordt de juiste callbackroutine aangeroepen voor elk minifilterstuurprogramma dat is geregistreerd voor die bewerking. Wanneer die callbackroutine retourneert, roept FltMgr de juiste callbackroutine aan voor het volgende minifilterstuurprogramma dat zich voor de bewerking heeft geregistreerd.

Stel dat alle drie de minifilterstuurprogramma's in deze afbeelding zijn geregistreerd voor dezelfde I/O-bewerking. In deze situatie:

  • Wanneer FltMgr de I/O-bewerking ontvangt, worden de minifilter-callbackroutines aangeroepen in volgorde van hoogte van hoog naar laag (A, B, C). FltMgr stuurt de I/O-aanvraag vervolgens door naar het volgende lagere stuurprogramma voor verdere verwerking.
  • Wanneer FltMgr- de I/O-aanvraag voor voltooiing ontvangt, worden de postoperation callback-routines van elk minifilterstuurprogramma in omgekeerde volgorde aangeroepen, van laag naar hoog (C, B, A).

Voor interoperabiliteit met verouderde filterstuurprogramma's kan FltMgr- filterapparaatobjecten koppelen aan een I/O-stack van een bestandssysteem op meer dan één locatie. Elk van FltMgrfilterapparaatobjecten wordt een framegenoemd. Vanuit het perspectief van een verouderd filterstuurprogramma is elk filterbeheerframe gewoon een ander verouderd filterstuurprogramma.

Elk filterbeheerframe vertegenwoordigt een reeks hoogten. FltMgr kan een bestaand frame aanpassen of een nieuw frame maken zodat minifilterstuurprogramma's op de juiste locatie kunnen worden gekoppeld.

FltMgr- kan geen minifilter koppelen tussen twee gekoppelde verouderde filters, tenzij er al een filterbeheerframe tussen deze filters is. Als een minifilter is bedoeld om boven een verouderd filter te worden gekoppeld, kan het eronder worden gekoppeld, afhankelijk van het bestaan van een tweede gekoppeld verouderd filter. Een minifilter dat is bedoeld om onder een verouderd filter te worden gekoppeld, kan in plaats daarvan boven dat verouderde filter worden gekoppeld.

Belangrijk

Controleer altijd de interoperabiliteit van verouderde filters met minifilters of overweeg verouderde filters te vervangen door minifilters. Zie Richtlijnen voor het overzetten van verouderde filterstuurprogramma'svoor meer informatie.

Als een minifilterstuurprogramma wordt ongeladen en opnieuw geladen, laadt het systeem het opnieuw op dezelfde hoogte in hetzelfde frame vanwaar het is ongeladen.

In de volgende afbeelding ziet u een vereenvoudigde I/O-stack met twee filterbeheerframes, minifilterstuurprogramma-exemplaren en een verouderd filterstuurprogramma.

diagram dat een vereenvoudigde I/O-stack illustreert met twee filterbeheerframes, minifilterstuurprogramma's en een verouderd filterstuurprogramma.