RxPurgeRelatedFobxs-Funktion (scavengr.h)
RxPurgeRelatedFobxs löscht alle FOBX-Strukturen, die einer NET_ROOT-Struktur zugeordnet sind.
Syntax
NTSTATUS RxPurgeRelatedFobxs(
PNET_ROOT NetRoot,
PRX_CONTEXT RxContext,
BOOLEAN AttemptFinalization,
PFCB PurgingFcb
);
Parameter
NetRoot
Ein Zeiger auf die NET_ROOT-Struktur, für die die FOBX-Strukturen gelöscht werden müssen.
RxContext
Ein Zeiger auf die RX_CONTEXT-Struktur.
AttemptFinalization
Ein boolescher Wert, der angibt, ob ein Versuch zum Abschließen und Freigeben der zugeordneten FCB-Struktur erfolgen soll.
PurgingFcb
Ein Zeiger auf die FCB-Struktur, für die eine Bereinigung erfolgen soll.
Rückgabewert
RxPurgeRelatedFobxs gibt STATUS_SUCCESS bei Erfolg oder einen der folgenden Fehlerwerte bei Fehler zurück:
Rückgabecode | Beschreibung |
---|---|
|
Es konnten keine verwandten FOBX-Strukturen gelöscht werden. |
Hinweise
Bei der Bereinigung sind dem Dateiobjekt keine Benutzerhandles mehr zugeordnet. In solchen Fällen wird das Zeitfenster zwischen schließen und bereinigen durch die zusätzlichen Verweise vorgegeben, die vom Speicher- und Cache-Manager verwaltet werden. Bei der Bereinigung wird der FOBX in eine ausstehende Liste gesetzt und aus der entsprechenden Liste entfernt, wenn ein Schließenvorgang empfangen wird. Wenn ein geöffneter Vorgang mit ACCESS_DENIED status fehlschlägt, kann RDBSS in der Zwischenzeit eine Bereinigung der FOBX-Struktur erzwingen. Dies ist ein synchroner Vorgang.
Bei Verzeichnisbenennungen müssen alle Dateien unter dem Verzeichnis geschlossen werden. Ein Netzwerk-Mini-Redirector kann 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 RxPurgeRelatedFobxs-Routine versucht, alle FOBX-Strukturen zu bereinigen, für die ein Schließenvorgang aussteht, bevor die Bereinigungsanforderung empfangen wurde. Die RxPurgeRelatedFobxs-Routine ruft den Scavenger-Mutex ab, durchläuft den ClosePendingFobxsList-Member auf dem Scavenger-Objekt, indem Listeneinträge entfernt werden, und gibt dann den Mutex frei.
Wenn TryFinalize auf TRUE festgelegt ist, versucht RxPurgeRelatedFobxs , den zugehörigen FCB abzuschließen und freizugeben.
Wenn PFCB nicht NULL ist und diese löschende FCB-Strcuture nicht mit der FCB-Struktur identisch ist, die der FOBX auf dem ClosePendingFobxsList-Member zugeordnet ist, ruft RxPurgeRelatedFobxs die MRxAreFilesAliased-Rückrufroutine auf, die vom Netzwerk-Mini-Redirector bereitgestellt wird, wenn diese Routine unterstützt wird. Der Aufruf von MRxAreFilesAliased dient dazu, zu bestimmen, ob die PFCB ein Alias für den FCB ist, der der FOBX-Struktur zugeordnet ist.
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform | Desktop |
Kopfzeile | scavengr.h (include Rxprocs.h) |
IRQL | <= APC_LEVEL |