Função RxPurgeRelatedFobxs (scavengr.h)
RxPurgeRelatedFobxs limpa todas as estruturas FOBX associadas a uma estrutura NET_ROOT.
Sintaxe
NTSTATUS RxPurgeRelatedFobxs(
PNET_ROOT NetRoot,
PRX_CONTEXT RxContext,
BOOLEAN AttemptFinalization,
PFCB PurgingFcb
);
Parâmetros
NetRoot
Um ponteiro para a estrutura NET_ROOT para a qual as estruturas FOBX precisam ser limpas.
RxContext
Um ponteiro para a estrutura RX_CONTEXT.
AttemptFinalization
Um valor booliano que indica se uma tentativa de finalizar e liberar a estrutura FCB associada deve ocorrer.
PurgingFcb
Um ponteiro para a estrutura FCB para a qual a limpeza deve ocorrer.
Retornar valor
RxPurgeRelatedFobxs retorna STATUS_SUCCESS com êxito ou um dos seguintes valores de erro em caso de falha:
Código de retorno | Descrição |
---|---|
|
Nenhuma estrutura FOBX relacionada pode ser limpa. |
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 de fechamento 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 da estrutura FOBX. Essa é uma operação síncrona.
Para renomeações de diretório, todos os arquivos no diretório precisam ser fechados. 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 RxPurgeRelatedFobxs tenta limpar todas as estruturas FOBX que tinham uma operação de fechamento pendente antes do recebimento da solicitação de limpeza. A rotina RxPurgeRelatedFobxs adquire o mutex scavenger, atravessa o membro ClosePendingFobxsList no objeto scavenger removendo entradas de lista e libera o mutex.
Se AttemptFinalize estiver definido como TRUE, RxPurgeRelatedFobxs tentará finalizar e liberar o FCB associado.
Se PFCB não for NULL e esse strcuture fcb de limpeza não for o mesmo que a estrutura FCB associada ao FOBX no membro ClosePendingFobxsList , então RxPurgeRelatedFobxs chamará a rotina de retorno de chamada MRxAreFilesAliased fornecida pelo minidiretório de rede se essa rotina tiver suporte. A chamada para MRxAreFilesAliased é para determinar se o PFCB é um alias para o FCB associado à estrutura FOBX.
Requisitos
Requisito | Valor |
---|---|
Plataforma de Destino | Área de Trabalho |
Cabeçalho | scavengr.h (include Rxprocs.h) |
IRQL | <= APC_LEVEL |