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 del file system possono usare la funzionalità di FltMgr per scrivere driver minifiltri più semplici da sviluppare rispetto ai driver di filtro del file system legacy. Il risultato finale è un processo di sviluppo abbreviato e un driver più robusto e di qualità superiore.
FltMgr viene installato con Windows, ma diventa attivo solo quando viene caricato un driver minifiltro. 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 minifiltro 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 minifiltro a una determinata altitudine su un determinato volume viene chiamato un'istanza del driver minifiltro.
Altitudine di un minifiltro:
- Assicura che l'istanza del driver minifiltro venga sempre caricata nella posizione appropriata rispetto ad altre istanze del driver minifiltro.
- Determina l'ordine in cui FltMgr chiama il driver minifiltro per gestire l'I/O.
La figura seguente mostra uno stack di I/O semplificato con gestione filtri e tre driver minifiltro.
Un driver minifiltro 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 minifiltro può registrare una routine di callback di preoperazione, una routine di callback di postoperazione o entrambi. Quando FltMgr gestisce un'operazione di I/O, chiama la routine di callback appropriata per ogni driver minifiltro 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 questa situazione:
- Quando FltMgr riceve l'operazione di I/O, chiama le routine di callback di preoperazione minifiltro 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 postperation 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 filtro a uno stack di I/O del file system in più posizioni. Ogni oggetto dispositivo filtro di FltMgr è denominato 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ò regolare un frame esistente o creare un nuovo frame per consentire ai driver minifiltro di collegarsi nella posizione corretta.
FltMgr non può collegare un minifiltro tra due filtri legacy collegati, a meno che non esista già 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 destinato a essere collegato al di sotto di un filtro legacy potrebbe invece essere collegato sopra il 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 di driver di filtro legacy.
Se un driver minifiltro viene scaricato e ricaricato, il sistema lo ricarica allo stesso livello di 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 minifiltro e driver di filtro legacy.