Partager via


Fonction RxPurgeAllFobxs (rxprocs.h)

RxPurgeAllFobxs vide toutes les structures FOBX associées à un mini-redirecteur réseau.

Syntaxe

void RxPurgeAllFobxs(
  PRDBSS_DEVICE_OBJECT RxDeviceObject
);

Paramètres

RxDeviceObject

Pointeur vers l’objet d’appareil de mini-redirecteur pour lequel le vidage doit être effectué.

Valeur de retour

None

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. RDBSS utilise un processus de charognard s’exécutant sur un thread distinct pour rechercher et vider les structures FOBX non inutiles et d’autres structures.

Un mini-redirecteur réseau peut appeler RxPurgeAllFobxs et RxScavengeAllFobsx en réponse à un événement de changement d’alimentation PnP.

La routine RxPurgeAllFobxs 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 la structure FOBX n’est pas NULL, RxPurgeAllFobxs vide la structure FOBX et tente d’acquérir un verrou exclusif sur la structure FCB associée. En cas de réussite, RxPurgeAllFobxs tente alors de déréférencer la structure et la déréférencement NET_FOBX, de finaliser et de libérer la structure FCB.

Sur les builds vérifiées, RxPurgeAllFobxs oblige le système à ASSERT pour un certain nombre de conditions, notamment les suivantes :

  • Le membre Flink de RxScavenger->structure ClosePendingFobxsList sur RxDeviceObject est NULL.
  • NodeTypeCode >fobx n’est pas RDBSS_NTC_FOBX.
  • Les membres Flink et Blink d’une entrée de liste sont NULL.

Configuration requise

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

Voir aussi

RxPurgeRelatedFobxs

RxScavengeAllFobxs

RxScavengeFobxsForNetRoot