RxPurgeRelatedFobxs-Funktion (scavengr.h)
RxPurgeRelatedFobxs alle FOBX-Strukturen löscht, 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 Löschvorgang erfolgen soll.
Rückgabewert
RxPurgeRelatedFobxs gibt STATUS_SUCCESS bei Erfolg oder einen der folgenden Fehlerwerte für Fehler zurück:
Rückgabecode | Beschreibung |
---|---|
|
Es konnten keine zugehörigen FOBX-Strukturen gelöscht werden. |
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 geöffneter Vorgang mit ACCESS_DENIED Status fehlschlägt, kann RDBSS eine Bereinigung der FOBX-Struktur erzwingen. Dies ist ein synchroner Vorgang.
Bei Verzeichnisbenennungen müssen alle Dateien unter dem Verzeichnis geschlossen werden. Ein Netzwerk-Miniumleitungsmodul ruft möglicherweise RxPurgeRelatedFobxs und RxScavengeFobxsForNetRoot- als Reaktion auf eine IRP_MJ_SET_INFORMATION Anforderung zum Umbenennen eines Verzeichnisses auf. 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 RxPurgeRelatedFobxs Routine versucht, alle FOBX-Strukturen zu löschen, die vor dem Empfang der Bereinigungsanforderung einen Schließenvorgang ausstehen. Die RxPurgeRelatedFobxs Routine übernimmt den Gerüstmutex, durchläuft die ClosePendingFobxsList Member auf dem Gerüstobjekt, das Listeneinträge entfernt, und gibt dann den Mutex frei.
Wenn AttemptFinalize- auf TRUEfestgelegt ist, versucht RxPurgeRelatedFobxs, den zugehörigen FCB abzuschließen und freizugeben.
Wenn PFCB- nicht NULL-ist und diese löschende FCB-Struktur nicht mit der FCB-Struktur übereinstimmt, die mit der FOBX-Struktur im ClosePendingFobxsList Member verknüpft ist, dann ruft RxPurgeRelatedFobxs die MRxAreFilesAliased Rückrufroutine auf, die von der Netzwerkminiumleitung bereitgestellt wird, wenn diese Routine 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.
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform- | Desktop |
Header- | scavengr.h (include Rxprocs.h) |
IRQL- | <= APC_LEVEL |