Partager via


RxChangeBufferingState, fonction (rxprocs.h)

RxChangeBufferingState est appelé pour traiter une demande de modification d’état de mise en mémoire tampon.

Syntaxe

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

Paramètres

SrvOpen

Pointeur vers la structure de données SRV_OPEN à modifier.

Context

Pointeur vers le paramètre de contexte à utiliser par le rappel du mini-redirecteur réseau.

ComputeNewState

Valeur qui indique si le nouvel état de mise en mémoire tampon doit être calculé. Lorsque cette valeur est définie sur TRUE, le nouvel état de mise en mémoire tampon est déterminé en appelant le mini-redirecteur réseau pour calculer le nouvel état de mise en mémoire tampon. Lorsque cette valeur est FALSE, le nouvel état de mise en mémoire tampon est déterminé par le membre bufferingFlags de la structure SrvOpen passée.

Valeur de retour

RxChangeBufferingState retourne toujours STATUS_SUCCESS si cette routine a réussi ou si une erreur se produit. Si une erreur se produit, l’état de mise en mémoire tampon est modifié afin qu’aucune mise en mémoire tampon n’est activée.

Remarques

Si la mise en mémoire tampon locale est désactivée pour ce fcB (FCB_STATE_DISABLE_LOCAL_BUFFERING est définie dans le membre de structure FcbState du FCB), cela désactive la mise en mémoire tampon locale indépendamment du mode ouvert sur le FCB et toutes les options de mise en mémoire tampon par défaut. Lorsque FCB_STATE_DISABLE_LOCAL_BUFFERING est défini, le nouvel état de mise en mémoire tampon défini par RxChangeBufferingState consiste à désactiver toutes les mémoires tampons.

Si ComputeNewState est TRUE, la routine MRxComputeNewBufferingState exportée par le mini-redirecteur réseau est appelée pour calculer le nouvel état de mise en mémoire tampon à utiliser.

Si le FCB est acquis exclusivement et ComputeNewState est FALSE. puis RxChangeBufferingState définit les options d’état de mise en mémoire tampon suivantes :

  • 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
Pour acquérir le FCB exclusivement, le FCB ne doit pas être ouvert avec l’une des valeurs suivantes :
  • ShareAccess.SharedRead
  • ShareAccess.SharedWrite
  • ShareAccess.SharedDelete
RDBSS n’utilise actuellement pas de nombreuses options de mise en mémoire tampon possibles. Ces options sont donc ignorées en interne par RDBSS lorsqu’elles sont désactivées à l’aide de RxChangeBufferingState. Ces options de mise en mémoire tampon ignorées sont les suivantes :
  • 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 l’état de mise en mémoire tampon FCB_STATE_WRITECACHING_ENABLED est désactivé, un objet FCB dans le cache système est vidé.

À la sortie de RxChangeBufferingState, aucune modification n’est apportée à la propriété de la ressource.

Exigences

Exigence Valeur
plateforme cible Bureau
d’en-tête rxprocs.h (include Rxprocs.h, Struchdr.h, Fcb.h)
IRQL <= APC_LEVEL

Voir aussi

RxIndicateChangeOfBufferingState

RxIndicateChangeOfBufferingStateForSrvOpen

La structure SRV_OPEN