RxFinalizeNetFcb 함수(rxprocs.h)

RxFinalizeNetFCB 는 지정된 FCB 구조를 마무리합니다. 호출자는 FCB와 연결된 NET_ROOT 단독 잠금이 있어야 합니다.

구문

BOOLEAN RxFinalizeNetFcb(
  [out] OUT PFCB   ThisFcb,
  [in]  IN BOOLEAN RecursiveFinalize,
  [in]  IN BOOLEAN ForceFinalize,
  [in]  IN LONG    ReferenceCount
);

매개 변수

[out] ThisFcb

마무리할 FCB 구조체에 대한 포인터입니다.

[in] RecursiveFinalize

재귀적으로 완료해야 하는지 여부를 나타내는 값입니다.

[in] ForceFinalize

참조 수에 관계없이 종료를 강제해야 하는지 여부를 나타내는 값입니다.

이 매개 변수가 FALSE이면 FCB가 완료되려면 FCB의 NodeReferenceCount 멤버가 1이어야 합니다.

[in] ReferenceCount

강제 종료를 계속 허용하는 FCB의 참조 수입니다.

반환 값

RxFinalizeNetFCB 는 성공 시 TRUE 를 반환하고, 종료가 발생하지 않으면 FALSE 를 반환합니다.

설명

RxFinalizeNetFCB 루틴은 일반적으로 네트워크 미니 리렉터 드라이버에서 직접 호출되지 않습니다. RDBSS는 IRP_MJ_CLOSE 대한 I/O 요청 패킷이 수신될 때 내부적으로 이 루틴을 호출합니다. 이 IRP는 일반적으로 파일 닫기 작업을 요청하는 사용자 모드 애플리케이션에 대한 응답으로 RDBSS에서 수신됩니다. 다른 커널 드라이버가 이러한 IRP를 발급할 수도 있습니다.

RDBSS의 긴밀한 처리 전략은 서버의 워크로드를 가능한 한 최소화해야 한다는 공리에 근거합니다. 동일한 파일을 반복적으로 닫고 여는 여러 애플리케이션이 있습니다(예: 일괄 처리 파일 처리). 이러한 경우 동일한 파일이 열리고, 버퍼의 줄이 읽혀지고, 파일이 닫혀 있고, 동일한 작업 집합이 반복해서 반복됩니다.

이는 닫기 요청의 지연된 처리에 의해 RDBSS에서 처리됩니다. 요청을 완료하고 닫기 요청에서 처리를 시작하는 사이에 약 10초의 지연이 있습니다. 그러면 이후 열린 작업을 기존 SRV_OPEN 축소할 수 있는 창이 열립니다. 이러한 요구 사항을 충족하도록 시간 간격을 조정할 수 있습니다.

RxFinalizeNetFCB를 호출하기 전에 FCB 구조체에 대한 잠금을 배타적 모드로 획득해야 합니다.

RecursiveFinalize 매개 변수가 FALSE이면 FCB에 대한 미해결 참조가 있는 경우 RxFinalizeNetFCB가 실패합니다(FCB 구조의 OpenCount 또는 CleanCount 멤버는 0이 아닙니다).

ForceFinalize 매개 변수가 TRUE이면 RxFinalizeNetFCB로 인해 시스템에서 확인된 빌드에서 ASSERT가 발생합니다.

재귀 종료 후 FCB와 연결된 참조 수가 최대 1이 될 수 있으므로 추가 종료가 발생할 수 있습니다. 이 최종 참조 수는 NET_ROOT 접두사 이름 테이블에 속합니다. 실제 종료는 다음 두 부분으로 나뉩니다.

  • 참조 수가 1과 같거나 ForceFinalize 매개 변수가 TRUE이면 RxFinalizeNetFCB가 FCB 를 완료합니다.
  • 참조 수가 0으로 표시되면 FCB가 종료되고 FCB에 사용되는 메모리도 해제됩니다.

요구 사항

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

추가 정보

RxCreateNetFcb

RxCreateNetFobx

RxCreateNetRoot

RxCreateSrvCall

RxCreateSrvOpen

RxCreateVNetRoot

RxDereference

RxFinalizeConnection

RxFinalizeNetFobx

RxFinalizeNetRoot

RxFinalizeSrvCall

RxFinalizeSrvOpen

RxFinalizeVNetRoot

RxFinishFcbInitialization

RxForceFinalizeAllVNetRoots

RxReference

RxSetSrvCallDomainName

RxpDereferenceNetFcb

RxpReferenceNetFcb

FCB 구조체