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
STATUS_UNSUCCESSFUL
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

Confira também

MRxAreFilesAliased

RxPurgeAllFobxs

RxScavengeAllFobxs

RxScavengeFobxsForNetRoot