Sobre espaços reservados
Um espaço reservado do sistema de arquivos é um arquivo que é uma representação para o conteúdo real de um arquivo ou um diretório que reside em outro lugar. Essa otimização permite que o conteúdo real de um arquivo ou diretório resida em outro lugar e seja buscado sob demanda. O conteúdo real inclui metadados, dados de arquivo e entradas de diretório.
Os espaços reservados podem ser arquivos ou diretórios. Eles podem conter uma parte dos metadados reais do arquivo ou diretório ou uma parte dos dados reais de arquivo ou entradas de diretório. Os arquivos de espaço reservado são marcados como arquivos esparsos com o conjunto de FILE_ATTRIBUTE_SPARSE_FILE bits.
Normalmente, um espaço reservado é um ponto de nova análise que um minifiltro do sistema de arquivos possui e gerencia. O minifiltro proprietário é o habilitador da virtualização e possibilita que um espaço reservado pareça e se comporte como um arquivo ou diretório regular no sistema de arquivos. Esses drivers de virtualização interceptam solicitações de E/S em seus espaços reservados e facilitam um comportamento semelhante ao sistema de arquivos. ProjFs e Arquivos de Nuvem são dois exemplos de plataformas de virtualização no Windows que usam espaços reservados.
Os minifiltros que possuem os espaços reservados são capazes de lidar adequadamente com essas solicitações de E/S para atender à E/S. Por exemplo, se um aplicativo tentar ler um arquivo de espaço reservado desidratado, o minifiltro fornecerá os dados do arquivo para atender à solicitação de E/S.
Os minifiltros proprietários só são capazes de fornecer a virtualização para solicitações de E/S originadas acima deles, seja do modo de usuário ou de componentes que estão acima deles na pilha de E/S.
Minifiltros que não possuem o espaço reservado têm a capacidade de emitir operações de E/S direcionadas a filtros abaixo deles usando APIs como FltReadFile, FltWriteFile e assim por diante. Se um minifiltro não proprietário emitisse uma solicitação de E/S direcionada para um arquivo de espaço reservado abaixo do minifiltro proprietário, o minifiltro proprietário não seria capaz de atender adequadamente à solicitação de E/S.
Por exemplo, se um filtro emitir um FltReadFile direcionado para um arquivo de espaço reservado desidratado que o minifiltro proprietário não vê, o filtro de direcionamento poderá obter um bloco de zeros (0s) em vez dos dados reais, pois o espaço reservado pode ser um arquivo esparso. Se o sistema armazenar em cache uma leitura que busca um bloco de 0s, essa leitura poluirá o cache que poderá corromper os dados do arquivo se o sistema liberar o cache poluído para o disco. Portanto, é imperativo que os minifiltros manipulem os espaços reservados adequadamente.