다음을 통해 공유


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의 NodeReferenceCount 멤버는 FCB가 종료되려면 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에 대한 미해결 참조가 있는 경우(FCB 구조의 OpenCount 또는 CleanCount 멤버가 0이 아닌 경우 RxFinalizeNetFCB 실패합니다.

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 구조체