Share via


Concetti relativi a Gestione filtri

Gestione filtri (FltMgr.sys) è un driver in modalità kernel fornito dal sistema che implementa ed espone le funzionalità comunemente necessarie nei driver di filtro del file system. Gli sviluppatori di filtri di file system di terze parti possono usare la funzionalità di FltMgr per scrivere driver "minifilter" più semplici da sviluppare rispetto ai driver di filtro del file system legacy. Il risultato finale è un processo di sviluppo abbreviato e driver più affidabili e di qualità superiore.

FltMgr viene installato con Windows, ma diventa attivo solo quando viene caricato un driver minifilter. Viene collegato allo stack del file system per un volume di destinazione. Un driver minifilter si collega allo stack del file system indirettamente registrandosi con FltMgr per le operazioni di I/O che il driver minifilter sceglie di filtrare.

I minifiltri sono collegati in un ordine specifico. Il sistema operativo determina l'ordine di allegato in base a gruppi di ordini di carico e altitudini. L'allegato di un driver minifilter a una particolare altitudine su un determinato volume viene chiamato istanza del driver minifilter.

Altitudine di un minifiltro:

  • Assicura che l'istanza del driver minifilter venga sempre caricata nella posizione appropriata rispetto ad altre istanze del driver minifilter.
  • Determina l'ordine in cui FltMgr chiama il driver minifilter per gestire l'I/O.

La figura seguente mostra uno stack di I/O semplificato con gestione filtri e tre driver minifilter.

Diagramma che illustra uno stack di I/O semplificato con il gestore filtri e tre driver minifilter.

Un driver minifilter può filtrare le operazioni di I/O basate su I/O e operazioni di callback veloci di I/O e file system (FSFilter). Per ognuna delle operazioni di I/O che sceglie di filtrare, un minifilter può registrare una routine di callback di preoperazione, una routine di callback di post-esecuzione o entrambe. Quando FltMgr gestisce un'operazione di I/O, chiama la routine di callback appropriata per ogni driver minifilter registrato per tale operazione. Quando la routine di callback viene restituita, FltMgr chiama la routine di callback appropriata per il driver minifilter successivo registrato per l'operazione.

Si supponga, ad esempio, che tutti e tre i driver minifiltri in questa figura siano registrati per la stessa operazione di I/O. In questo caso:

  • Quando FltMgr riceve l'operazione di I/O, chiama le routine di callback di preoperazione minifilter in ordine di altitudine dal più alto al più basso (A, B, C). FltMgr inoltra quindi la richiesta di I/O al driver inferiore successivo per un'ulteriore elaborazione.
  • Quando FltMgr riceve la richiesta di I/O per il completamento, chiama le routine di callback postoperation di ogni driver minifilter in ordine inverso, dal più basso al più alto (C, B, A).

Per l'interoperabilità con i driver di filtro legacy, FltMgr può collegare oggetti dispositivo di filtro a uno stack di I/O del file system in più posizioni. Ognuno degli oggetti dispositivo di filtro di FltMgr è detto frame. Dal punto di vista di un driver di filtro legacy, ogni frame di gestione filtri è solo un altro driver di filtro legacy.

Ogni frame di gestione filtri rappresenta un intervallo di altitudini. FlgMgr può modificare un frame esistente o creare un nuovo frame per consentire ai driver minifilter di collegarsi nella posizione corretta.

FltMgr non può collegare un minifiltro tra due filtri legacy collegati, a meno che non sia già presente un frame di gestione filtri tra di essi. Se un minifiltro deve essere collegato sopra un filtro legacy, può essere collegato al di sotto di esso, a seconda dell'esistenza di un secondo filtro legacy collegato. Un minifiltro che deve essere collegato al di sotto di un filtro legacy potrebbe invece essere collegato sopra tale filtro legacy.

Importante

Verificare sempre l'interoperabilità dei filtri legacy con minifiltri o provare a sostituire i filtri legacy con minifiltri. Per altre informazioni, vedere Linee guida per la conversione dei driver di filtro legacy.

Se un driver minifilter viene scaricato e ricaricato, viene ricaricato con la stessa altitudine nello stesso fotogramma da cui è stato scaricato.

La figura seguente illustra uno stack di I/O semplificato con due frame di gestione filtri, istanze del driver minifilter e un driver di filtro legacy.

diagramma che illustra uno stack i/o semplificato con due frame di gestione filtri, istanze del driver minifilter e un driver di filtro legacy.