функция обратного вызова PMRX_CHANGE_BUFFERING_STATE_CALLDOWN (mrx.h)

RDBSS вызывает подпрограммуMRxCompleteBufferingStateChangeRequest для уведомления сетевого мини-перенаправителя о завершении запроса на изменение состояния буферизации.

Синтаксис

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.

  • Устанавливает для элемента FcbStateSrvOpen-Fcb> значение FCB_STATE_BUFFERSTATE_CHANGING.

  • Изменяет следующие элементы в структуре RX_CONTEXT, на которую указывает параметр RxContext :

    • pRelevantSrvOpen имеет SRV_OPEN структуру.
    • pFcb имеет структуру FCB.
    • PFobx имеет структуру FOBX.

Если включена буферизация блокировки, MRxCompleteBufferingStateChangeRequest потребуется очистить блокировки диапазона байтов на сервере. Список заблокированных регионов передается мини-перенаправлению сети в элементе LowIoContext.ParamsFor.Locks.LockList структуры RX_CONTEXT.

Перенаправитель SMB использует MRxCompleteBufferingStateChangeRequest для отправки ответа на прерывание блокировки или закрытия дескриптора при разрыве операции, если файл больше не используется. Блокировки диапазона байтов, которые необходимо очистить на сервере, передаются в сетевой мини-перенаправитель в элементе LowIoContext.ParamsFor.Locks.LockList структуры RX_CONTEXT. Новый уровень oplock передается в параметре MrxContext .

RDBSS игнорирует возвращаемое значение из MRxCompleteBufferingStateChangeRequest.

Требования

Требование Значение
Целевая платформа Персональный компьютер
Верхняя часть mrx.h (включая Mrx.h)

См. также раздел

MRxComputeNewBufferingState

MRxGetConnectionId