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 |