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 |
---|---|
|
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 |