Функция RxPurgeRelatedFobxs (scavengr.h)

RxPurgeRelatedFobxs очищает все структуры FOBX, связанные со структурой NET_ROOT.

Синтаксис

NTSTATUS RxPurgeRelatedFobxs(
  PNET_ROOT   NetRoot,
  PRX_CONTEXT RxContext,
  BOOLEAN     AttemptFinalization,
  PFCB        PurgingFcb
);

Параметры

NetRoot

Указатель на NET_ROOT структуру, для которой необходимо очистить структуры FOBX.

RxContext

Указатель на структуру RX_CONTEXT.

AttemptFinalization

Логическое значение, указывающее, должна ли предприняться попытка завершения и освобождения связанной структуры FCB.

PurgingFcb

Указатель на структуру FCB, для которой должна происходить очистка.

Возвращаемое значение

RxPurgeRelatedFobxs возвращает STATUS_SUCCESS при успешном выполнении или одно из следующих значений ошибки при сбое:

Код возврата Описание
STATUS_UNSUCCESSFUL
Никакие связанные структуры FOBX не могут быть очищены.

Комментарии

При очистке больше нет пользовательских дескрипторов, связанных с объектом файла. В таких случаях интервал времени между закрытием и очисткой определяется дополнительными ссылками, поддерживаемыми диспетчером памяти и диспетчером кэша. При очистке FOBX помещается в список ожидающих закрытия и удаляется из соответствующего списка при получении операции закрытия. В то же время, если открытая операция завершается сбоем с состоянием ACCESS_DENIED, RDBSS может принудительно очистить структуру FOBX. Это синхронная операция.

Для переименования каталогов необходимо закрыть все файлы в каталоге. Сетевой мини-перенаправитель может вызывать RxPurgeRelatedFobxs и RxScavengeFobxsForNetRoot в ответ на запрос IRP_MJ_SET_INFORMATION на переименование каталога. Передав структуру NET_ROOT для каталога и FCB NULL , все структуры FOBX, связанные с каталогом, будут очищены и очищены.

Подпрограмма RxPurgeRelatedFobxs пытается очистить все структуры FOBX, для которой была закрыта операция до получения запроса на очистку. Подпрограмма RxPurgeRelatedFobxs получает мьютекс scavenger, просматривает член ClosePendingFobxsList в объекте scavenger, удаляя записи списка, а затем освобождает мьютекс.

Если параметр TryFinalize имеет значение TRUE, RxPurgeRelatedFobxs попытается завершить и освободить связанный FCB.

Если PFCB не имеет значение NULL и эта очистка FCB strcuture отличается от структуры FCB, связанной с FOBX в члене ClosePendingFobxsList , RxPurgeRelatedFobxs вызовет подпрограмму обратного вызова MRxAreFilesAliased , предоставляемую сетевым мини-перенаправлением, если эта подпрограмма поддерживается. Вызов MRxAreFilesAliased заключается в том, чтобы определить, является ли PFCB псевдонимом для FCB, связанного со структурой FOBX.

Требования

Требование Значение
Целевая платформа Персональный компьютер
Верхняя часть scavengr.h (включая Rxprocs.h)
IRQL <= APC_LEVEL

См. также раздел

MRxAreFilesAliased

RxPurgeAllFobxs

RxScavengeAllFobxs

RxScavengeFobxsForNetRoot