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

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

Синтаксис

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

Параметры

SrvOpen

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

Context

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

ComputeNewState

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

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

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

Замечания

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

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

Если FB приобретается исключительно и ComputeNewStatefalse. затем 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
Для получения ФКБ требуется, чтобы ФКБ не должен быть открыт со следующими значениями:
  • 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 изменено на выключенное, все ФКБ в системном кэше сбрасываются.

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

Требования

Требование Ценность
целевая платформа Настольный
заголовка rxprocs.h (include Rxprocs.h, Struchdr.h, Fcb.h)
IRQL <= APC_LEVEL

См. также

RxIndicateChangeOfBufferingState

RxIndicateChangeOfBufferingStateForSrvOpen

структура SRV_OPEN