RxScavengeFobxsForNetRoot 함수(scavengr.h)

RxScavengeFobxsForNetRoot 는 지정된 NET_ROOT 구조체와 연결된 모든 FOBX 구조를 청소합니다.

구문

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

매개 변수

NetRoot

FOBX 구조체를 청소해야 하는 NET_ROOT 구조체에 대한 포인터입니다.

PurgingFcb

청소가 수행되어야 하는 FCB에 대한 포인터입니다.

SynchronizeWithScavenger

이 루틴이 청소부와 동기화되어야 하는지 여부를 지정하는 부울 값입니다.

반환 값

없음

설명

정리 시 파일 개체와 연결된 사용자 핸들이 더 이상 없습니다. 이러한 경우 닫기와 정리 사이의 기간은 메모리 관리자와 캐시 관리자가 유지 관리하는 추가 참조에 의해 결정됩니다. 정리 시 FOBX는 닫기 보류 중인 목록에 배치되고 닫기 작업이 수신되면 해당 목록에서 제거됩니다. 그 동안 ACCESS_DENIED 상태 열려 있는 작업이 실패하는 경우 RDBSS는 FOBX 구조체의 제거 및 청소를 강제할 수 있습니다. 동기 작업입니다.

디렉터리 이름을 바꾸려면 디렉터리 아래의 모든 파일을 닫아야 합니다. 따라서 네트워크 미니 리디렉터에서 디렉터리 이름을 바꾸는 IRP_MJ_SET_INFORMATION 요청에 대한 응답으로 RxPurgeRelatedFobxsRxScavengeFobxsForNetRoot 를 호출할 수 있습니다. 디렉터리 및 NULL FCB에 대한 NET_ROOT 구조를 전달하면 디렉터리와 연결된 모든 FOBX 구조가 제거되고 제거됩니다.

RxScavengeFobxsForNetRoot 루틴은 청소기 뮤텍스를 획득하고, 청소기 개체의 FobxsToBeFinalized 목록 멤버를 트래버스하고, scavenger 개체의 ScavengerFinalizationList 멤버의 꼬리에 있는 항목을 추가한 다음, 뮤텍스를 해제합니다.

PurgingFcbNULL이 아니고 이 제거 FCB 구조체가 청소기 개체의 FobxsToBeFinalized 목록 멤버에 있는 FOBX 구조와 연결된 FCB와 동일하지 않은 경우 RxScavengeFobxsForNetRoot는 지원되는 경우 네트워크 미니 리디렉션자가 제공하는 MRxAreFilesAliased 콜백 루틴을 호출합니다. MRxAreFilesAliased에 대한 호출은 PFCB가 FOBX 구조와 연결된 FCB의 별칭인지 확인하는 것입니다.

확인된 빌드에서 RxScavengeAllFobxs 는 시스템이 다음 조건에 대해 ASSERT를 수행하도록 합니다.

  • FOBX 구조체의 NodeTypeCode 멤버가 RDBSS_NTC_FOBX 않습니다.

요구 사항

요구 사항
대상 플랫폼 데스크톱
머리글 scavengr.h(Rxprocs.h 포함)
IRQL <= APC_LEVEL

추가 정보

MRxAreFilesAliased

RxPurgeAllFobxs

RxPurgeRelatedFobxs

RxScavengeAllFobxs