À propos des espaces réservés
Un espace réservé de système de fichiers est un fichier qui est une représentation du contenu réel d’un fichier ou d’un répertoire qui réside ailleurs. Cette optimisation permet au contenu réel d’un fichier ou d’un répertoire de résider ailleurs et d’être extrait à la demande. Le contenu réel inclut les métadonnées, les données de fichier et les entrées de répertoire.
Les espaces réservés peuvent être des fichiers ou des répertoires. Elles peuvent contenir une partie des métadonnées de fichier ou de répertoire réelles ou une partie des données de fichier ou des entrées de répertoire réelles. Les fichiers d’espace réservé sont marqués comme des fichiers épars avec le FILE_ATTRIBUTE_SPARSE_FILE bit défini.
En règle générale, un espace réservé est un point d’analyse qu’un minifiltre de système de fichiers possède et gère. Le minifiltre propriétaire est l’élément d’activation de la virtualisation et permet à un espace réservé de ressembler à un fichier ou répertoire normal sur le système de fichiers. Ces pilotes de virtualisation interceptent les demandes d’E/S sur leurs espaces réservés et facilitent le comportement d’un système de fichiers. ProjFs et Cloud Files sont deux exemples de plateformes de virtualisation dans Windows qui utilisent des espaces réservés.
Les minifiltres qui possèdent les espaces réservés sont en mesure de gérer de manière appropriée ces demandes d’E/S pour satisfaire les E/S. Par exemple, si une application tente de lire un fichier d’espace réservé déshydraté, le minifiltre fournit les données du fichier pour répondre à la demande d’E/S.
Les minifiltres propriétaires sont uniquement en mesure de fournir la virtualisation pour les requêtes d’E/S qui proviennent du mode utilisateur ou des composants qui se trouvent au-dessus d’eux dans la pile d’E/S.
Les minifiltres qui ne possèdent pas l’espace réservé ont la possibilité d’émettre des opérations d’E/S ciblées sur des filtres situés en dessous d’eux à l’aide d’API telles que FltReadFile, FltWriteFile, etc. Si un minifiltre non propriétaire émet une demande d’E/S ciblée vers un fichier d’espace réservé situé en dessous du minifiltre propriétaire, le minifiltre propriétaire ne serait pas en mesure de répondre correctement à la demande d’E/S.
Par exemple, si un filtre émet un Fichier FltReadFile ciblé sur un fichier d’espace réservé déshydraté que le minifiltre propriétaire ne voit pas, le filtre de ciblage peut obtenir un bloc de zéros (0s) plutôt que les données réelles, car l’espace réservé peut être un fichier éparse. Si le système met en cache une lecture qui a extrait un bloc de 0s, cette lecture pollue le cache, ce qui risque d’endommager les données du fichier si le système vide le cache pollué sur le disque. Par conséquent, il est impératif que les minifiltres gèrent les espaces réservés de manière appropriée.