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

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

ForceFinalizeFALSE이면 ThisSrvOpen이 가리키는 SRV_OPEN 구조체의 NodeReferenceCount 멤버가 0이어야 SRV_OPEN 완료됩니다.

반환 값

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

설명

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

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

RecursiveFinalize 매개 변수가 TRUE이면 RxFinalizeSrvOpenRecursiveFinalize 매개 변수를 TRUE로 설정하고 ForceFinalize 매개 변수를 사용하여 RxFinalizeNetFobx를 호출하여 이 SRV_OPEN 연결된 FOBX 구조를 마무리합니다.

연결된 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 구조체