Manipulando espaços reservados
Diretrizes para minifiltros que implementam espaços reservados
Todas as implementações de virtualização que usam espaços reservados devem definir o atributo de arquivo FILE_ATTRIBUTE_RECALL_ON_DATA_ACCESS nesses espaços reservados. Esse atributo indica que:
- Ler esses arquivos abaixo do minifiltro proprietário pode retornar 0s e
- A leitura desses arquivos acima do minifiltro proprietário envolve o custo extra de fornecer os dados.
Um minifiltro pode remover esse atributo do espaço reservado depois que todos os dados estiverem disponíveis localmente.
Todos os minifiltros que implementam espaços reservados devem estar no Grupo de Pedidos de Carga do HSM.
Diretrizes para todos os minifiltros
Os filtros não devem emitir leituras/gravações direcionadas de instâncias de filtro abaixo do Grupo de Ordem de Carga do HSM para arquivos que têm o atributo FILE_ATTRIBUTE_RECALL_ON_DATA_ACCESS definido. Essa situação pode levar a dados de arquivo corrompidos. Um desenvolvedor de minifiltro pode tentar contornar essa situação emitindo uma solicitação de E/S para a parte superior da pilha, mas essa solicitação pode levar a deadlocks.
Os filtros também não devem emitir leituras e gravações em arquivos de espaço reservado que tenham o atributo FILE_ATTRIBUTE_RECALL_ON_DATA_ACCESS definido acima do Grupo de Ordem de Carga do HSM. Essa leitura ou gravação causa hidratação desnecessária quando nenhum aplicativo de usuário solicitou os dados do arquivo.
Um minifiltro não deve emitir leituras/gravações ao interceptar somente atributos abertos. Essas leituras/gravações podem causar deadlocks, pois determinadas implementações não esperam que somente atributos sejam convertidos em operações de acesso a dados. Além disso, tais leituras/gravações derrotam a finalidade de uma verificação de minifiltro para FILE_ATTRIBUTE_RECALL_ON_DATA_ACCESS para que possa evitar as duas situações mencionadas anteriormente.
Portanto, é recomendável que todos os minifiltros não emitam leituras/gravações em arquivos que tenham FILE_ATTRIBUTE_RECALL_ON_DATA_ACCESS definidos.