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.
Valor de retorno
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. |
Observações
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. Esta é uma operação síncrona.
Para renomeação 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 NULL FCB, todas as estruturas FOBX associadas ao diretório seriam limpas e scavenged.
O RxPurgeRelatedFobxs tentativas rotineiras de 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 do scavenger, percorre o membro ClosePendingFobxsList no objeto scavenger removendo entradas de lista e, em seguida, libera o mutex.
Se AttemptFinalize estiver definido como TRUE, RxPurgeRelatedFobxs tentará finalizar e liberar o FCB associado.
Se PFCB não for NULL e essa estrutura fcb de limpeza não for a mesma que a estrutura FCB associada ao FOBX no membro ClosePendingFobxsList, em seguida, RxPurgeRelatedFobxs chamará o MRxAreFilesAliased rotina de retorno de chamada fornecida pelo minidiretório de rede se essa rotina tiver suporte. A chamada para MRxAreFilesAliased é determinar se o PFCB é um alias para o FCB associado à estrutura FOBX.
Requisitos
Requisito | Valor |
---|---|
da Plataforma de Destino | Área de trabalho |
cabeçalho | scavengr.h (include Rxprocs.h) |
IRQL | <= APC_LEVEL |