RxScavengeFobxsForNetRoot-Funktion (scavengr.h)
RxScavengeFobxsForNetRoot gerüstet alle FOBX-Strukturen, die einer bestimmten NET_ROOT Struktur zugeordnet sind.
Syntax
void RxScavengeFobxsForNetRoot(
PNET_ROOT NetRoot,
PFCB PurgingFcb,
BOOLEAN SynchronizeWithScavenger
);
Parameter
NetRoot
Ein Zeiger auf die NET_ROOT Struktur, für die die FOBX-Strukturen gerüstet werden müssen.
PurgingFcb
Ein Zeiger auf den FCB, für den das Gerüst auftreten soll.
SynchronizeWithScavenger
Ein boolescher Wert, der angibt, ob diese Routine mit dem Gerüst synchronisiert werden soll.
Rückgabewert
Nichts
Bemerkungen
Bei der Bereinigung gibt es keine weiteren Benutzerhandles, die dem Dateiobjekt zugeordnet sind. In solchen Fällen wird das Zeitfenster zwischen Schließen und Bereinigen durch die zusätzlichen Verweise bestimmt, die vom Speicher-Manager und Cache-Manager verwaltet werden. Beim Bereinigen wird das FOBX in eine ausstehende Liste gesetzt und aus der entsprechenden Liste entfernt, wenn ein Schließenvorgang empfangen wird. Wenn ein offener Vorgang mit ACCESS_DENIED Status fehlschlägt, kann RDBSS eine Bereinigung und ein Gerüst für die FOBX-Struktur erzwingen. Dies ist ein synchroner Vorgang.
Bei Verzeichnisbenennungen müssen alle Dateien unter dem Verzeichnis geschlossen werden. Daher kann ein Netzwerk-Miniumleitung RxPurgeRelatedFobxs und RxScavengeFobxsForNetRoot- als Reaktion auf eine IRP_MJ_SET_INFORMATION Anforderung zum Umbenennen eines Verzeichnisses aufrufen. Durch die Übergabe der NET_ROOT Struktur für das Verzeichnis und einer NULL FCB werden alle mit dem Verzeichnis verknüpften FOBX-Strukturen gelöscht und bereinigt.
Die RxScavengeFobxsForNetRoot Routine erwirbt den Scavenger Mutex, durchläuft die FobxsToBeFinalized Listenelement des Gerüstobjekts und fügt alle Einträge hinzu, die am Schwanz der ScavengerFinalizationList Member des Gerüstobjekts gefunden wurden, und gibt dann den Mutex los.
Wenn PurgingFcb nicht NULL-ist und diese löschende FCB-Struktur nicht mit der FCB-Struktur übereinstimmt, die der FOBX-Struktur auf der FobxsToBeFinalized Listenelement des Gerüstobjekts zugeordnet ist, RxScavengeFobxsForNetRoot- ruft die MRxAreFilesAliased Rückrufroutine auf, die von der Netzwerk-Miniumleitung bereitgestellt wird, wenn sie unterstützt wird. Der Aufruf von MRxAreFilesAliased besteht darin, zu bestimmen, ob der PFCB ein Alias für den FCB ist, der der FOBX-Struktur zugeordnet ist.
Bei überprüften Builds bewirkt RxScavengeAllFobxs, dass das System für die folgende Bedingung ASSERT ausführt:
- Das NodeTypeCode- Mitglied einer FOBX-Struktur ist nicht RDBSS_NTC_FOBX.
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform- | Desktop |
Header- | scavengr.h (include Rxprocs.h) |
IRQL- | <= APC_LEVEL |