Condividi tramite


Funzione RxChangeBufferingState (rxprocs.h)

RxChangeBufferingState viene chiamato per elaborare una richiesta di modifica dello stato di buffering.

Sintassi

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

Parametri

SrvOpen

Puntatore alla struttura dei dati SRV_OPEN da modificare.

Context

Puntatore al parametro di contesto da usare dal callback del mini-redirector di rete.

ComputeNewState

Valore che indica se il nuovo stato di buffering deve essere calcolato. Quando questo valore è impostato su TRUE, il nuovo stato di buffering viene determinato chiamando il mini-redirector di rete per calcolare il nuovo stato di buffering. Quando questo valore è FALSE, il nuovo stato di buffering viene determinato dal bufferingFlags membro dell'oggetto passato nella struttura SrvOpen.

Valore restituito

RxChangeBufferingState restituisce sempre STATUS_SUCCESS se la routine ha avuto esito positivo o se si verifica un errore. Se si verifica un errore, lo stato di buffering viene modificato in modo che non sia abilitato alcun buffering.

Osservazioni

Se il buffering locale è disabilitato per questo fcb (FCB_STATE_DISABLE_LOCAL_BUFFERING è impostato nel membro della struttura FcbState del cluster di failover), il buffering locale verrà disabilitato indipendentemente dalla modalità aperta nel fcb e in tutte le opzioni di buffering predefinite. Quando FCB_STATE_DISABLE_LOCAL_BUFFERING è impostato, il nuovo stato di buffering impostato da RxChangeBufferingState sarà disabilitare tutto il buffering.

Se ComputeNewState è TRUE, viene chiamata la routine MRxComputeNewBufferingState esportata dal mini-redirector di rete per calcolare il nuovo stato di buffering da usare.

Se il cluster di failover viene acquisito esclusivamente e ComputeNewState è FALSE. quindi RxChangeBufferingState imposta le opzioni di stato di buffering seguenti:

  • 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
Per acquisire il cluster di failover in modo esclusivo, è necessario che il cluster di failover non venga aperto con uno dei valori seguenti:
  • ShareAccess.SharedRead
  • ShareAccess.SharedWrite
  • ShareAccess.SharedDelete
RDBSS attualmente non usa una serie di opzioni di buffering possibili, pertanto queste opzioni vengono ignorate internamente da RDBSS quando vengono disattivate usando RxChangeBufferingState. Queste opzioni di buffering ignorate includono quanto segue:
  • FCB_STATE_WRITEBUFFERING_ENABLED
  • FCB_STATE_READBUFFERING_ENABLED
  • FCB_STATE_OPENSHARING_ENABLED
  • FCB_STATE_COLLAPSING_ENABLED
  • FCB_STATE_FILESIZECACHEING_ENABLED
  • FCB_STATE_FILETIMECACHEING_ENABLED
Se lo stato di buffering FCB_STATE_WRITECACHING_ENABLED viene disattivato, qualsiasi fcb nella cache di sistema viene scaricato.

All'uscita da RxChangeBufferingState, non viene apportata alcuna modifica alla proprietà della risorsa.

Fabbisogno

Requisito Valore
piattaforma di destinazione Desktop
intestazione rxprocs.h (include Rxprocs.h, Struchdr.h, Fcb.h)
IRQL <= APC_LEVEL

Vedere anche

RxIndicateChangeOfBufferingState

RxIndicateChangeOfBufferingStateForSrvOpen

Struttura SRV_OPEN