Partager via


RxPurgeRelatedFobxs, fonction (scavengr.h)

RxPurgeRelatedFobxs vide toutes les structures FOBX associées à une structure NET_ROOT.

Syntaxe

NTSTATUS RxPurgeRelatedFobxs(
  PNET_ROOT   NetRoot,
  PRX_CONTEXT RxContext,
  BOOLEAN     AttemptFinalization,
  PFCB        PurgingFcb
);

Paramètres

NetRoot

Pointeur vers la structure NET_ROOT pour laquelle les structures FOBX doivent être vidées.

RxContext

Pointeur vers la structure RX_CONTEXT.

AttemptFinalization

Valeur booléenne qui indique si une tentative de finalisation et de libération de la structure FCB associée doit se produire.

PurgingFcb

Pointeur vers la structure FCB pour laquelle le vidage doit se produire.

Valeur retournée

RxPurgeRelatedFobxs retourne STATUS_SUCCESS en cas de réussite ou l’une des valeurs d’erreur suivantes en cas d’échec :

Code de retour Description
STATUS_UNSUCCESSFUL
Aucune structure FOBX associée n’a pu être vidée.

Remarques

Lors du nettoyage, il n’y a plus de handles utilisateur associés à l’objet fichier. Dans ce cas, la fenêtre de temps entre la fermeture et le nettoyage est dictée par les références supplémentaires gérées par le gestionnaire de mémoire et le gestionnaire de cache. Lors du nettoyage, le FOBX est placé sur une liste en attente de fermeture et supprimé de la liste correspondante lorsqu’une opération de fermeture est reçue. Entre-temps, si une opération ouverte échoue avec ACCESS_DENIED status, RDBSS peut forcer un vidage de la structure FOBX. Il s’agit d’une opération synchrone.

Pour les renommages de répertoire, tous les fichiers sous le répertoire doivent être fermés. Un mini-redirecteur réseau peut appeler RxPurgeRelatedFobxs et RxScavengeFobxsForNetRoot en réponse à une demande de IRP_MJ_SET_INFORMATION pour renommer un répertoire. En passant la structure NET_ROOT pour le répertoire et un FCB NULL , toutes les structures FOBX associées au répertoire sont vidées et récupérées.

La routine RxPurgeRelatedFobxs tente de vider toutes les structures FOBX dont l’opération de fermeture était en attente avant la réception de la demande de vidage. La routine RxPurgeRelatedFobxs acquiert le mutex de scavenger, traverse le membre ClosePendingFobxsList sur l’objet scavenger en supprimant les entrées de liste, puis libère le mutex.

Si AttemptFinalize est défini sur TRUE, RxPurgeRelatedFobxs tente de finaliser et de libérer le FCB associé.

Si PFCB n’est pas NULL et que cette structure FCB purgée n’est pas la même que la structure FCB associée au FOBX sur le membre ClosePendingFobxsList , RxPurgeRelatedFobxs appelle la routine de rappel MRxAreFilesAliased fournie par le mini-redirecteur réseau si cette routine est prise en charge. L’appel à MRxAreFilesAliased vise à déterminer si le PFCB est un alias pour le fcb associé à la structure FOBX.

Configuration requise

Condition requise Valeur
Plateforme cible Desktop (Expérience utilisateur)
En-tête scavengr.h (include Rxprocs.h)
IRQL <= APC_LEVEL

Voir aussi

MRxAreFilesAliased

RxPurgeAllFobxs

RxScavengeAllFobxs

RxScavengeFobxsForNetRoot