다음을 통해 공유


PMRX_CHANGE_BUFFERING_STATE_CALLDOWN 콜백 함수(mrx.h)

RDBSSMRxCompleteBufferingStateChangeRequest 루틴을 호출하여 네트워크 미니 리디렉터에 버퍼링 상태 변경 요청이 완료되었음을 알립니다.

통사론

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->FcbFcbState 멤버를 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