다음을 통해 공유


RxPurgeRelatedFobxs 함수(scavengr.h)

RxPurgeRelatedFobxs는 NET_ROOT 구조체와 연결된 모든 FOBX 구조를 제거합니다.

구문

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

매개 변수

NetRoot

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

RxContext

RX_CONTEXT 구조체에 대한 포인터입니다.

AttemptFinalization

연결된 FCB 구조를 종료하고 해제하려는 시도가 발생해야 하는지 여부를 나타내는 부울 값입니다.

PurgingFcb

제거가 수행되어야 하는 FCB 구조체에 대한 포인터입니다.

반환 값

RxPurgeRelatedFobxs는 성공 시 STATUS_SUCCESS 반환하거나 실패 시 다음 오류 값 중 하나를 반환합니다.

반환 코드 설명
STATUS_UNSUCCESSFUL
관련 FOBX 구조를 제거할 수 없습니다.

설명

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

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

RxPurgeRelatedFobxs 루틴은 제거 요청이 수신되기 전에 보류 중인 닫기 작업이 있는 모든 FOBX 구조를 제거하려고 시도합니다. RxPurgeRelatedFobxs 루틴은 청소기 뮤텍스를 획득하고, 목록 항목을 제거하는 scavenger 개체의 ClosePendingFobxsList 멤버를 트래버스한 다음, 뮤텍스를 해제합니다.

AttemptFinalizeTRUE로 설정된 경우 RxPurgeRelatedFobxs는 연결된 FCB를 마무리하고 해제하려고 시도합니다.

PFCBNULL이 아니고 이 제거 FCB 구조체가 ClosePendingFobxsList 멤버의 FOBX와 연결된 FCB 구조와 동일하지 않은 경우 RxPurgeRelatedFobxs는 이 루틴이 지원되는 경우 네트워크 미니 리디렉터에서 제공하는 MRxAreFilesAliased 콜백 루틴을 호출합니다. MRxAreFilesAliased에 대한 호출은 PFCB가 FOBX 구조와 연결된 FCB의 별칭인지 확인하는 것입니다.

요구 사항

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

추가 정보

MRxAreFilesAliased

RxPurgeAllFobxs

RxScavengeAllFobxs

RxScavengeFobxsForNetRoot