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에 대한 미해결 참조(FCB structureare 0이 아닌 OpenCount 또는 CleanCount 멤버)가 있는 경우 RxFinalizeNetFCB가 실패합니다.
ForceFinalize 매개 변수가 TRUE이면 RxFinalizeNetFCB로 인해 시스템이 확인된 빌드에서 ASSERT가 됩니다.
재귀적 종료 후에는 FCB와 연결된 참조 수가 최대 1이 되어 추가 종료가 발생할 수 있습니다. 이 마지막 참조 수는 NET_ROOT 접두사 이름 테이블에 속합니다. 실제 마무리는 다음 두 부분으로 나뉩니다.
- 참조 수가 1이거나 ForceFinalize 매개 변수가 TRUE이면 RxFinalizeNetFCB 가 FCB를 완료합니다.
- 참조 수가 0으로 이동하면 FCB가 종료되고 FCB에 사용되는 메모리도 해제됩니다.
요구 사항
| 대상 플랫폼 | 데스크톱 |
| 헤더 | rxprocs.h(Rxprocs.h 포함) |
| IRQL | <= APC_LEVEL |
참고 항목
피드백
다음에 대한 사용자 의견 제출 및 보기