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 miembro BufferingFlags de la estructura SrvOpen pasada.

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.

Comentarios

Si el almacenamiento en búfer local está deshabilitado para este FCB (FCB_STATE_DISABLE_LOCAL_BUFFERING se establece en el miembro de 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 varias opciones de almacenamiento en búfer posibles, por lo que RDBSS omite internamente estas opciones 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 memoria caché del sistema.

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

Requisitos

Requisito Value
Plataforma de destino Escritorio
Encabezado rxprocs.h (incluya Rxprocs.h, Struchdr.h, Fcb.h)
IRQL <= APC_LEVEL

Consulte también

RxIndicateChangeOfBufferingState

RxIndicateChangeOfBufferingStateForSrvOpen

Estructura de SRV_OPEN