Freigeben über


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

Weitere Informationen

MRxAreFilesAliased

RxPurgeAllFobxs

RxScavengeAllFobxs

RxScavengeFobxsForNetRoot