Coexistence avec d’autres pilotes de filtre de système de fichiers
L’un des problèmes les plus insidieux qui doit être correctement géré par un pilote de filtre de système de fichiers est la coexistence avec d’autres pilotes de filtre. Lors de la génération d’un pilote de filtre de système de fichiers pour coexister avec d’autres pilotes de filtre de système de fichiers, il est préférable de prendre en compte les problèmes suivants :
Les pilotes de filtre doivent tenir compte de la présence d’autres pilotes de filtre dans leurs opérations. Toute opération effectuée par le pilote de filtre doit être suffisamment robuste pour survivre à un pilote de filtre supplémentaire à l’aide de la même technique ou d’une autre technique.
Les pilotes de filtre peuvent avoir un impact sur le comportement d’autres filtres en modifiant le comportement de base du système.
L’augmentation du nombre de pilotes de filtre augmente la consommation de ressources rares, notamment l’espace de pile. Les pilotes de filtre de système de fichiers doivent s’efforcer de réduire leur utilisation de ces ressources rares. Sinon, les applications utilisateur malveillantes peuvent tirer parti de ces faiblesses pour provoquer l’échec du système. Les développeurs doivent être particulièrement attentifs aux chemins d’achèvement et aux chemins d’erreur.
Les pilotes de filtre doivent être prudents dans ce qu’ils envoient au pilote inférieur (pilote de filtre ou système de fichiers) et doivent être libéraux dans ce qu’ils acceptent. Dans la mesure du possible, le pilote de filtre doit essayer de s’assurer que les opérations qu’il envoie au pilote sous-jacent sont simples et non compliquées (n’effectuez pas d’opérations de renommage pendant les opérations de création, par exemple).
Les pilotes de filtre doivent être prudents en ce qui concerne le verrouillage. Les verrous ne doivent jamais être conservés entre les appels de système de fichiers. Divers composants du système font des hypothèses très précises et explicites sur l’ordre des verrous et les fonctions qui peuvent et ne peuvent pas bloquer. Perturber cela en ajoutant une autre couche de verrouillage peut facilement entraîner des interblocages. Les E/S provenant de Srv.sys exposent ces problèmes particulièrement rapidement, mais ils peuvent également être observés lors des tests de résistance normaux.
Il est impératif que tout développeur de pilotes de filtre de système de fichiers non seulement concevoir et implémenter pour coexister proprement avec d’autres pilotes de filtre, mais également tester le pilote de filtre avec d’autres pilotes de filtre pour s’assurer que le pilote n’introduit pas de problèmes de sécurité au sein du système.