Condividi tramite


Funzione RxChangeBufferingState (rxprocs.h)

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

Sintassi

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

Parametri

SrvOpen

Puntatore alla struttura di dati SRV_OPEN da modificare.

Context

Puntatore al parametro di contesto da usare dal callback del mini-reindirizzamento 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 membro BufferingFlags della struttura SrvOpen passata.

Valore restituito

RxChangeBufferingState restituisce sempre STATUS_SUCCESS se questa routine è riuscita 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.

Commenti

Se il buffer locale è disabilitato per questo fcB (FCB_STATE_DISABLE_LOCAL_BUFFERING è impostato nel membro della struttura FcbState del fcb), il buffer 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 buffer impostato da RxChangeBufferingState sarà quello di disabilitare tutto il buffering.

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

Se il fcB viene acquisito esclusivamente e ComputeNewState è FALSE. RxChangeBufferingState imposterà le opzioni di stato di buffer 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 fcB in modo esclusivo, è necessario che il fcB non sia aperto con uno dei valori seguenti:
  • ShareAccess.SharedRead
  • ShareAccess.SharedWrite
  • ShareAccess.SharedDelete
RDBSS non usa attualmente diverse opzioni di buffering possibili, pertanto queste opzioni vengono ignorate internamente da RDBSS quando vengono impostate tramite 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 buffer FCB_STATE_WRITECACHING_ENABLED viene modificato in disattivato, viene scaricato qualsiasi fcB nella cache di sistema.

All'uscita da RxChangeBufferingState non è presente alcuna modifica nella proprietà della risorsa.

Requisiti

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

Vedi anche

RxIndicateChangeOfBufferingState

RxIndicateChangeOfBufferingStateForSrvOpen

Struttura SRV_OPEN