Partager via


Fonction RxChangeBufferingState (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 passée dans SrvOpen .

Valeur retournée

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é de sorte 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 de 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 toute la mise en mémoire tampon.

Si ComputeNewState a la valeur 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 que ComputeNewState a la valeur FALSE. rxChangeBufferingState définit alors 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 nécessite exclusivement que le FCB ne soit ouvert avec aucune des valeurs suivantes :
  • ShareAccess.SharedRead
  • ShareAccess.SharedWrite
  • ShareAccess.SharedDelete
RDBSS n’utilise actuellement pas un certain nombre d’options de mise en mémoire tampon possibles. Ces options sont donc ignorées en interne par RDBSS lorsqu’elles sont définies à 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é, tous les fcb du cache système sont vidés.

À la sortie de RxChangeBufferingState, il n’y a aucun changement dans la propriété des ressources.

Configuration requise

Condition requise Valeur
Plateforme cible Desktop (Expérience utilisateur)
En-tête rxprocs.h (incluent Rxprocs.h, Struchdr.h, Fcb.h)
IRQL <= APC_LEVEL

Voir aussi

RxIndicateChangeOfBufferingState

RxIndicateChangeOfBufferingStateForsrvOpen

The SRV_OPEN Structure