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이면 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이면 RxFinalizeSrvOpen은 RecursiveFinalize 매개 변수를 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 |