PMRX_CHANGE_BUFFERING_STATE_CALLDOWN 콜백 함수(mrx.h)
MRxCompleteBufferingStateChangeRequest 루틴은 RDBSS에서 호출되어 버퍼링 상태 변경 요청이 완료되었음을 네트워크 미니 리디렉터에 알립니다.
구문
PMRX_CHANGE_BUFFERING_STATE_CALLDOWN PmrxChangeBufferingStateCalldown;
NTSTATUS PmrxChangeBufferingStateCalldown(
[in, out] IN OUT PRX_CONTEXT RxContext,
[in, out] IN OUT PMRX_SRV_OPEN SrvOpen,
[in] IN PVOID MRxContext
)
{...}
매개 변수
[in, out] RxContext
RX_CONTEXT 구조체에 대한 포인터입니다. 이 매개 변수에는 작업을 요청하는 IRP가 포함되어 있습니다.
[in, out] SrvOpen
네트워크 미니 리다이렉터 콜백 루틴에서 사용할 컨텍스트 매개 변수에 대한 포인터입니다.
[in] MRxContext
변경할 SRV_OPEN 구조체 및 연결된 FCB 구조체에 대한 포인터입니다.
반환 값
MRxCompleteBufferingStateChangeRequest 는 성공 시 STATUS_SUCCESS 반환하거나 다음과 같은 적절한 NTSTATUS 값을 반환합니다.
반환 코드 | 설명 |
---|---|
STATUS_NOT_SUPPORTED | 버퍼링 요청 변경의 옵션은 지원되지 않습니다. |
설명
MRxCompleteBufferingStateChangeRequest를 호출하기 전에 RDBSS:
FCB 구조체에 대한 배타적 잠금을 획득합니다.
SrvOpen-Fcb>의 FcbState 멤버를 FCB_STATE_BUFFERSTATE_CHANGING 설정합니다.
RxContext 매개 변수가 가리키는 RX_CONTEXT 구조체에서 다음 멤버를 수정합니다.
- pRelevantSrvOpen 은 SRV_OPEN 구조체로 설정됩니다.
- pFcb 는 FCB 구조체로 설정됩니다.
- pFobx 는 FOBX 구조체로 설정됩니다.
잠금 버퍼링을 사용하도록 설정하면 MRxCompleteBufferingStateChangeRequest 가 바이트 범위 잠금을 서버로 플러시해야 합니다. 잠긴 지역 목록은 RX_CONTEXT 구조체의 LowIoContext.ParamsFor.Locks.LockList 멤버의 네트워크 미니 리다이렉터에 전달됩니다.
SMB(서버 메시지 블록) 리다이렉터는 MRxCompleteBufferingStateChangeRequest 를 사용하여 oplock 중단 응답을 보내거나 파일이 더 이상 사용되지 않는 경우 oplock 중단 시 핸들을 닫습니다. 서버로 플러시해야 하는 바이트 범위 잠금은 RX_CONTEXT 구조체의 LowIoContext.ParamsFor.Locks.LockList 멤버의 네트워크 미니 리다이렉터에 전달됩니다. 새 oplock 수준은 MrxContext 매개 변수에 전달됩니다.
RDBSS는 MRxCompleteBufferingStateChangeRequest의 반환 값을 무시합니다.
요구 사항
요구 사항 | 값 |
---|---|
대상 플랫폼 | 데스크톱 |
머리글 | mrx.h(Mrx.h 포함) |