다음을 통해 공유


RxFinalizeSrvOpen 함수(fcb.h)

RxFinalizeSrvOpen 지정된 SRV_OPEN 구조를 완료합니다. 호출자는 SRV_OPEN 연결된 FCB에 대한 배타적 잠금과 FCB와 연결된 NET_ROOT 테이블 잠금에 대한 공유 또는 배타적 잠금이 있어야 합니다.

통사론

BOOLEAN RxFinalizeSrvOpen(
  [out] OUT PSRV_OPEN ThisSrvOpen,
  [in]  IN BOOLEAN    RecursiveFinalize,
  [in]  IN BOOLEAN    ForceFinalize
);

매개 변수

[out] ThisSrvOpen

완료할 SRV_OPEN 구조체에 대한 포인터입니다.

[in] RecursiveFinalize

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

[in] ForceFinalize

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

ForceFinalize FALSE 경우 SRV_OPEN 완료하려면 ThisSrvOpen 가리키는 SRV_OPEN 구조의 NodeReferenceCount 멤버가 0이어야 합니다.

반환 값

RxFinalizeSrvOpen 성공 시 TRUE 반환하거나 종료가 발생하지 않은 경우 FALSE .

발언

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

RxFinalizeSrvOpen호출하기 전에 호출자는 SRV_OPEN 연결된 FCB에 대한 배타적 잠금을 획득하고 FCB와 연결된 NET_ROOT 테이블 잠금에 대한 공유 또는 배타적 잠금을 획득해야 합니다.

RecursiveFinalize 매개 변수가 TRUE 경우 RxFinalizeSrvOpen 이 SRV_OPEN 연결된 FOBX 구조체를 완료합니다. RecursiveFinalize 매개 변수를 TRUEForceFinalize 매개 변수로 설정된 RxFinalizeNetFobx 호출합니다.

연결된 FCB의 FcbState 멤버에 FCB_STATE_ORPHANED 플래그가 설정되지 않은 경우 RxFinalizeSrvCall 네트워크 미니 리트리뷰터에서 제공하는 MRxForceClosed 루틴을 호출하여 SRV_CALL 완료합니다. SRV_CALL 구조체가 원래 FCB 만들기의 일부로 할당되지 않은 경우 SRV_CALL 구조체의 메모리도 해제됩니다.

요구 사항

요구
대상 플랫폼 바탕 화면
헤더 fcb.h(Mrxfcb.h, Fcb.h 포함)
IRQL <= APC_LEVEL

참고 항목

MRxForceClosed

RxCreateNetFcb

RxCreateNetFobx

RxCreateNetRoot

RxCreateSrvCall

RxCreateSrvOpen

RxCreateVNetRoot

RxDereference

RxFinalizeConnection

RxFinalizeNetFcb

RxFinalizeNetFobx

RxFinalizeNetRoot

RxFinalizeSrvCall

RxFinalizeVNetRoot

RxFinishFcbInitialization

RxForceFinalizeAllVNetRoots

RxReference

RxSetSrvCallDomainName

RxpDereferenceNetFcb

RxpReferenceNetFcb

SRV_OPEN 구조체