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 포함)

추가 정보

MRxComputeNewBufferingState

MRxGetConnectionId