Compartir a través de


Función RxChangeBufferingState (rxprocs.h)

se llama a rxChangeBufferingState para procesar una solicitud de cambio de estado de almacenamiento en búfer.

Sintaxis

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

Parámetros

SrvOpen

Puntero a la estructura de datos SRV_OPEN que se va a cambiar.

Context

Puntero al parámetro de contexto para que lo use la devolución de llamada del minidirector de red.

ComputeNewState

Valor que indica si se va a calcular el nuevo estado de almacenamiento en búfer. Cuando este valor se establece en TRUE, el nuevo estado de almacenamiento en búfer se determina llamando al minidirector de red para calcular el nuevo estado de almacenamiento en búfer. Cuando este valor es FALSE, el nuevo estado de almacenamiento en búfer viene determinado por el BufferingFlags miembro del pasado en SrvOpen estructura.

Valor devuelto

RxChangeBufferingState siempre devuelve STATUS_SUCCESS si esta rutina se realizó correctamente o si se produce un error. Si se produce un error, se cambia el estado de almacenamiento en búfer para que no se habilite ningún almacenamiento en búfer.

Observaciones

Si el almacenamiento en búfer local está deshabilitado para este FCB (FCB_STATE_DISABLE_LOCAL_BUFFERING se establece en el miembro de la estructura FcbState del FCB), esto deshabilitará el almacenamiento en búfer local independientemente del modo abierto en el FCB y las opciones de almacenamiento en búfer predeterminadas. Cuando se establece FCB_STATE_DISABLE_LOCAL_BUFFERING, el nuevo estado de almacenamiento en búfer establecido por RxChangeBufferingState será deshabilitar todo el almacenamiento en búfer.

Si ComputeNewState es TRUE, se llama a la rutina MRxComputeNewBufferingState exportada por el minidirector de red para calcular el nuevo estado de almacenamiento en búfer que se va a usar.

Si el FCB se adquiere exclusivamente y computeNewState es FALSE. a continuación, RxChangeBufferingState establecerá las siguientes opciones de estado de almacenamiento en búfer:

  • 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
Para adquirir el FCB exclusivamente, es necesario que el FCB no se abra con ninguno de los valores siguientes:
  • ShareAccess.SharedRead
  • ShareAccess.SharedWrite
  • ShareAccess.SharedDelete
RDBSS no usa actualmente una serie de posibles opciones de almacenamiento en búfer, por lo que estas opciones se omiten internamente mediante RDBSS cuando se establecen mediante RxChangeBufferingState. Estas opciones de almacenamiento en búfer omitida incluyen lo siguiente:
  • FCB_STATE_WRITEBUFFERING_ENABLED
  • FCB_STATE_READBUFFERING_ENABLED
  • FCB_STATE_OPENSHARING_ENABLED
  • FCB_STATE_COLLAPSING_ENABLED
  • FCB_STATE_FILESIZECACHEING_ENABLED
  • FCB_STATE_FILETIMECACHEING_ENABLED
Si el FCB_STATE_WRITECACHING_ENABLED estado de almacenamiento en búfer se cambia a desactivado, se vacía cualquier FCB de la caché del sistema.

Al salir de RxChangeBufferingState, no hay ningún cambio en la propiedad del recurso.

Requisitos

Requisito Valor
de la plataforma de destino de Escritorio
encabezado de rxprocs.h (incluya Rxprocs.h, Struchdr.h, Fcb.h)
irQL <= APC_LEVEL

Consulte también

rxIndicateChangeOfBufferingState

RxIndicateChangeOfBufferingStateForSrvOpen

el estructura de SRV_OPEN