Coesistenza con altri driver di filtro del file system
Uno dei problemi più insidiosi che devono essere gestiti correttamente da un driver di filtro del file system è la coesistenza con altri driver di filtro. Quando si compila un driver di filtro del file system per coesistere con altri driver di filtro del file system, è consigliabile considerare i problemi seguenti:
I driver di filtro devono considerare la presenza di altri driver di filtro nelle operazioni. Qualsiasi operazione eseguita dal driver di filtro deve essere abbastanza solida per sopravvivere a un driver di filtro aggiuntivo usando la stessa tecnica o diversa.
I driver di filtro possono influire sul comportamento di altri filtri modificando il comportamento di base del sistema.
L'aumento del numero di driver di filtro aumenta il consumo di risorse scarse, in particolare dello spazio dello stack. I driver di filtro del file system devono cercare di ridurre al minimo l'uso di tali risorse scarse. In caso contrario, le applicazioni utente dannose possono sfruttare tali debolezze per causare un errore del sistema. Gli sviluppatori devono prestare particolare attenzione ai percorsi di completamento e ai percorsi di errore.
I driver di filtro devono essere conservativi in quello che inviano al driver inferiore (driver di filtro o file system) e devono essere liberali in ciò che accettano. Quando possibile, il driver di filtro deve provare a garantire che le operazioni inviate al driver sottostante siano semplici e non complicate (non eseguire operazioni di ridenominazione durante le operazioni di creazione, ad esempio).
I driver di filtro devono essere cauti sul blocco. I blocchi non devono mai essere mantenuti tra le chiamate al file system. Vari componenti del sistema fanno presupposti molto precisi ed espliciti sull'ordinamento dei blocchi e sulle funzioni che possono e non possono bloccarsi. Disturbare questo aggiungendo un altro livello di blocco può facilmente portare a deadlock. L'I/O proveniente da Srv.sys espone questi problemi in modo particolarmente rapido, ma possono essere visti anche durante i normali test di stress.
È fondamentale che qualsiasi sviluppatore di driver di filtro del file system non solo progetta e implementa per coesistere in modo pulito con altri driver di filtro, ma anche testare il driver di filtro con altri driver di filtro per garantire che il driver non presenti problemi di sicurezza all'interno del sistema.