Freigeben über


RxPurgeAllFobxs-Funktion (rxprocs.h)

RxPurgeAllFobxs löscht alle FOBX-Strukturen, die einem Netzwerk-Mini-Redirector zugeordnet sind.

Syntax

void RxPurgeAllFobxs(
  PRDBSS_DEVICE_OBJECT RxDeviceObject
);

Parameter

RxDeviceObject

Ein Zeiger auf das Mini-Redirector-Geräteobjekt, für das die Bereinigung durchgeführt 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 vorgegeben, die vom Speicher- und Cache-Manager verwaltet werden. RDBSS verwendet einen scavenger-Prozess, der in einem separaten Thread ausgeführt wird, um nicht benötigte FOBX und andere Strukturen zu löschen und zu löschen.

Ein Netzwerk-Mini-Redirector kann RxPurgeAllFobxs und RxScavengeAllFobsx als Reaktion auf ein PnP-Energieänderungsereignis aufrufen.

Die RxPurgeAllFobxs-Routine ruft den Scavenger-Mutex ab, durchläuft das ClosePendingFobxsList-Element auf dem Scavenger-Objekt, wobei Listeneinträge entfernt werden, und gibt dann den Mutex frei. Wenn die FOBX-Struktur nicht NULL ist, löscht RxPurgeAllFobxs die FOBX-Struktur und versucht, eine exklusive Sperre für die zugeordnete FCB-Struktur zu erhalten. Bei erfolgreicher Ausführung versucht RxPurgeAllFobxs dann, die NET_FOBX-Struktur zu dereferenzieren und die FCB-Struktur zu dereferenzieren, abzuschließen und freizugeben.

Bei überprüften Builds bewirkt RxPurgeAllFobxs für eine Reihe von Bedingungen, einschließlich der folgenden, assert für das System:

  • Das Flink-Element der RxScavenger->ClosePendingFobxsList-Struktur im RxDeviceObject ist NULL.
  • Fobx->NodeTypeCode ist nicht RDBSS_NTC_FOBX.
  • Die Elemente Flink und Blink für einen Listeneintrag sind NULL.

Anforderungen

Anforderung Wert
Zielplattform Desktop
Kopfzeile rxprocs.h (include Rxprocs.h)
IRQL <= APC_LEVEL

Weitere Informationen

RxPurgeRelatedFobxs

RxScavengeAllFobxs

RxScavengeFobxsForNetRoot