RxScavengeFobxsForNetRoot-Funktion (scavengr.h)
RxScavengeFobxsForNetRoot löscht 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 abgefangen werden müssen.
PurgingFcb
Ein Zeiger auf den FCB, für den die Abscheidung erfolgen soll.
SynchronizeWithScavenger
Ein boolescher Wert, der angibt, ob diese Routine mit dem Scavenger synchronisiert werden soll.
Rückgabewert
Keine
Bemerkungen
Bei der Bereinigung sind dem Dateiobjekt keine weiteren Benutzerhandles zugeordnet. In solchen Fällen wird das Zeitfenster zwischen Schließen und Bereinigen durch die zusätzlichen Verweise diktiert, die vom Speicher- und Cache-Manager verwaltet werden. Beim Bereinigen wird der FOBX in eine ausstehende schließende Liste gesetzt und aus der entsprechenden Liste entfernt, wenn ein Geschlossener Vorgang empfangen wird. In der Zwischenzeit kann RDBSS, wenn ein geöffneter Vorgang mit ACCESS_DENIED status fehlschlägt, eine Lösch- und Abwräumung der FOBX-Struktur erzwingen. Dies ist ein synchroner Vorgang.
Bei Verzeichnisbenennungen müssen alle Dateien unter dem Verzeichnis geschlossen werden. Daher kann ein Netzwerkminiumleitungsor RxPurgeRelatedFobxs und RxScavengeFobxsForNetRoot als Reaktion auf eine IRP_MJ_SET_INFORMATION Anforderung zum Umbenennen eines Verzeichnisses aufrufen. Durch Übergeben der NET_ROOT-Struktur für das Verzeichnis und eines NULL FCB würden alle dem Verzeichnis zugeordneten FOBX-Strukturen gelöscht und gelöscht.
Die RxScavengeFobxsForNetRoot-Routine ruft das Scavenger-Mutex ab, durchquert das FobxsToBeFinalized-Listenelement des Scavenger-Objekts und fügt alle Einträge hinzu, die zum Ende des ScavengerFinalizationList-Members des Scavenger-Objekts gefunden wurden, und gibt dann den Mutex frei.
Wenn PurgingFcb nicht NULL ist und diese löschende FCB-Struktur nicht mit der FCB-Struktur identisch ist, die der FOBX-Struktur auf dem FobxsToBeFinalized-Listenelement des Scavenger-Objekts zugeordnet ist, ruft RxScavengeFobxsForNetRoot die vom Netzwerkminiumleitung bereitgestellte MRxAreFilesAliased-Rückrufroutine auf, wenn sie unterstützt wird. Der Aufruf von MRxAreFilesAliased besteht darin, zu ermitteln, ob die 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-Element einer FOBX-Struktur ist nicht RDBSS_NTC_FOBX.
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform | Desktop |
Kopfzeile | scavengr.h (include Rxprocs.h) |
IRQL | <= APC_LEVEL |