Função RxScavengeFobxsForNetRoot (scavengr.h)
RxScavengeFobxsForNetRoot armazena todas as estruturas FOBX associadas a uma determinada estrutura NET_ROOT.
Sintaxe
void RxScavengeFobxsForNetRoot(
PNET_ROOT NetRoot,
PFCB PurgingFcb,
BOOLEAN SynchronizeWithScavenger
);
Parâmetros
NetRoot
Um ponteiro para a estrutura NET_ROOT para a qual as estruturas FOBX precisam ser scavenged.
PurgingFcb
Um ponteiro para o FCB para o qual a limpeza deve ocorrer.
SynchronizeWithScavenger
Um valor booliano que especifica se essa rotina deve ser sincronizada com o catadores.
Retornar valor
Nenhum
Comentários
Na limpeza, não há mais identificadores de usuário associados ao objeto de arquivo. Nesses casos, a janela de tempo entre fechar e limpar é determinada pelas referências adicionais mantidas pelo gerenciador de memória e pelo gerenciador de cache. Na limpeza, o FOBX é colocado em uma lista pendente próxima e removido da lista correspondente quando uma operação de fechamento é recebida. Nesse ínterim, se uma operação aberta estiver falhando com ACCESS_DENIED status, o RDBSS poderá forçar uma limpeza e um cache da estrutura FOBX. Esta é uma operação síncrona.
Para renomeações de diretório, todos os arquivos no diretório precisam ser fechados. Portanto, um minidiretório de rede pode chamar RxPurgeRelatedFobxs e RxScavengeFobxsForNetRoot em resposta a uma solicitação IRP_MJ_SET_INFORMATION para renomear um diretório. Ao passar a estrutura NET_ROOT para o diretório e um FCB NULL , todas as estruturas FOBX associadas ao diretório seriam limpas e scavenged.
A rotina RxScavengeFobxsForNetRoot adquire o mutex do scavenger, atravessa o membro da lista FobxsToBeFinalized do objeto scavenger e adiciona todas as entradas encontradas na parte final do membro ScavengerFinalizationList do objeto scavenger e libera o mutex.
Se PurgingFcb não for NULL e essa estrutura fcb de limpeza não for a mesma que a FCB associada à estrutura FOBX no membro da lista FobxsToBeFinalized do objeto scavenger, RxScavengeFobxsForNetRoot chamará a rotina de retorno de chamada MRxAreFilesAliased fornecida pelo minidiretório de rede se houver suporte. A chamada para MRxAreFilesAliased é para determinar se o PFCB é um alias para o FCB associado à estrutura FOBX.
Em builds verificados, RxScavengeAllFobxs faz com que o sistema asserte para a seguinte condição:
- O membro NodeTypeCode de uma estrutura FOBX não é RDBSS_NTC_FOBX.
Requisitos
Requisito | Valor |
---|---|
Plataforma de Destino | Área de Trabalho |
Cabeçalho | scavengr.h (inclua Rxprocs.h) |
IRQL | <= APC_LEVEL |