Функция 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 при успешном выполнении или одно из следующих значений ошибки при сбое:
Код возврата | Описание |
---|---|
|
Никакие связанные структуры 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 |