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

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

Синтаксис

void RxScavengeFobxsForNetRoot(
  PNET_ROOT NetRoot,
  PFCB      PurgingFcb,
  BOOLEAN   SynchronizeWithScavenger
);

Параметры

NetRoot

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

PurgingFcb

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

SynchronizeWithScavenger

Логическое значение, указывающее, должна ли эта подпрограмма синхронизироваться с мусором.

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

None

Remarks

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

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

Подпрограмма RxScavengeFobxsForNetRoot получает мьютекс scavenger, просматривает элемент списка FobxsToBeFinalized объекта scavenger и добавляет все найденные записи в хвост элемента ScavengerFinalizationList объекта scavenger, а затем освобождает мьютекс.

Если purgingFcb не равно NULL и эта структура очистки FCB отличается от структуры FCB, связанной со структурой FOBX в элементе списка FobxsToBeFinalized объекта scavenger, RxScavengeFobxsForNetRoot вызовет подпрограмму обратного вызова MRxAreFilesAliased , предоставляемую мини-перенаправлением сети, если она поддерживается. Вызов MRxAreFilesAliased заключается в определении того, является ли PFCB псевдонимом для FCB, связанного со структурой FOBX.

В проверенных сборках RxScavengeAllFobxs вызывает в системе assert следующее условие:

  • Элемент NodeTypeCode структуры FOBX не RDBSS_NTC_FOBX.

Требования

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

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

MRxAreFilesAliased

RxPurgeAllFobxs

RxPurgeRelatedFobxs

RxScavengeAllFobxs