Функция RxChangeBufferingState (rxprocs.h)

RxChangeBufferingState вызывается для обработки запроса на изменение состояния буферизации.

Синтаксис

NTSTATUS RxChangeBufferingState(
  PSRV_OPEN SrvOpen,
  PVOID     Context,
  BOOLEAN   ComputeNewState
);

Параметры

SrvOpen

Указатель на SRV_OPEN структуру данных, которые необходимо изменить.

Context

Указатель на параметр контекста для использования обратным вызовом мини-перенаправления сети.

ComputeNewState

Значение, указывающее, требуется ли вычислить новое состояние буферизации. Если для этого значения задано значение TRUE, новое состояние буферизации определяется путем вызова мини-перенаправителя сети для вычисления нового состояния буферизации. Если это значение равно FALSE, новое состояние буферизации определяется членом BufferingFlags объекта , переданного в структуре SrvOpen .

Возвращаемое значение

RxChangeBufferingState всегда возвращает STATUS_SUCCESS, была ли эта подпрограмма успешной или произошла ошибка. При возникновении ошибки состояние буферизации изменяется таким образом, что буферизация не включена.

Комментарии

Если локальная буферизация отключена для этого FCB (FCB_STATE_DISABLE_LOCAL_BUFFERING задана в элементе структуры FcbState FCB), локальная буферизация будет отключена независимо от открытого режима в FCB и всех параметров буферизации по умолчанию. Если FCB_STATE_DISABLE_LOCAL_BUFFERING задано, новое состояние буферизации, заданное параметром RxChangeBufferingState , будет включать отключение всей буферизации.

Если параметр ComputeNewState имеет значение TRUE, то для вычисления нового состояния буферизации вызывается подпрограмма MRxComputeNewBufferingState , экспортируемая мини-перенаправителем сети.

Если fcb получается исключительно, а ComputeNewState имеет значение FALSE. тогда RxChangeBufferingState установит следующие параметры состояния буферизации:

  • FCB_STATE_WRITECACHING_ENABLED
  • FCB_STATE_FILESIZECACHEING_ENABLED
  • FCB_STATE_FILETIMECACHEING_ENABLED
  • FCB_STATE_WRITEBUFFERING_ENABLED
  • FCB_STATE_LOCK_BUFFERING_ENABLED
  • FCB_STATE_READBUFFERING_ENABLED
  • FCB_STATE_READCACHING_ENABLED
Для получения fcb исключительно требуется, чтобы fcb не открывался ни с каким из следующих значений:
  • ShareAccess.SharedRead
  • ShareAccess.SharedWrite
  • ShareAccess.SharedDelete
В настоящее время RDBSS не использует несколько возможных параметров буферизации, поэтому эти параметры игнорируются внутри RDBSS при их настройке с помощью RxChangeBufferingState. Эти игнорируемые параметры буферизации включают следующее:
  • FCB_STATE_WRITEBUFFERING_ENABLED
  • FCB_STATE_READBUFFERING_ENABLED
  • FCB_STATE_OPENSHARING_ENABLED
  • FCB_STATE_COLLAPSING_ENABLED
  • FCB_STATE_FILESIZECACHEING_ENABLED
  • FCB_STATE_FILETIMECACHEING_ENABLED
Если состояние буферизации FCB_STATE_WRITECACHING_ENABLED изменяется на выкл., все fcb в системном кэше сбрасываются.

При выходе из RxChangeBufferingState не изменяется владение ресурсом.

Требования

Требование Значение
Целевая платформа Персональный компьютер
Верхняя часть rxprocs.h (включая Rxprocs.h, Struchdr.h, Fcb.h)
IRQL <= APC_LEVEL

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

RxIndicateChangeOfBufferingState

RxIndicateChangeOfBufferingStateForSrvOpen

Структура SRV_OPEN