Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
RxFinalizeNetFCB schließt die angegebene FCB-Struktur ab. Der Anrufer muss über eine exklusive Sperre für die NET_ROOT verfügen, die mit FCB verbunden ist.
Syntax
BOOLEAN RxFinalizeNetFcb(
[out] OUT PFCB ThisFcb,
[in] IN BOOLEAN RecursiveFinalize,
[in] IN BOOLEAN ForceFinalize,
[in] IN LONG ReferenceCount
);
Parameter
[out] ThisFcb
Ein Zeiger auf die FCB-Struktur, die abgeschlossen werden soll.
[in] RecursiveFinalize
Der Wert, der angibt, ob die Fertigstellung rekursiv durchgeführt werden soll.
[in] ForceFinalize
Der Wert, der angibt, ob die Fertigstellung erzwungen werden soll, unabhängig von der Referenzanzahl.
Wenn dieser Parameter FALSEist, muss der NodeReferenceCount Mitglied des FCB 1 sein, damit der FCB abgeschlossen werden kann.
[in] ReferenceCount
Die Referenzanzahl auf dem FCB, die weiterhin die erzwungene Finalisierung zulassen wird.
Rückgabewert
RxFinalizeNetFCB gibt TRUE- bei Erfolg zurück oder FALSE-, wenn die Fertigstellung nicht aufgetreten ist:
Bemerkungen
Die RxFinalizeNetFCB Routine wird normalerweise nicht direkt von Netzwerk-Miniumleitungstreibern aufgerufen. RDBSS ruft diese Routine intern auf, wenn ein E/A-Anforderungspaket für IRP_MJ_CLOSE empfangen wird. Dieses IRP wird normalerweise von RDBSS als Reaktion auf eine Benutzermodusanwendung empfangen, die einen Dateischließvorgang anfordert. Es ist auch möglich, dass ein anderer Kerneltreiber ein solches IRP ausgibt.
Die Nahbehandlungsstrategie in RDBSS basiert auf dem Axiom, das die Workload auf dem Server möglichst minimiert werden sollte. Es gibt eine Reihe von Anwendungen, die dieselbe Datei wiederholt schließen und öffnen (z. B. Batchdateiverarbeitung). In diesen Fällen wird dieselbe Datei geöffnet, eine Zeile aus einem Puffer wird gelesen, die Datei wird geschlossen, und derselbe Satz von Vorgängen wird immer wieder wiederholt.
Dies wird in RDBSS durch eine verzögerte Verarbeitung der Close-Anforderung behandelt. Es liegt eine Verzögerung von ca. 10 Sekunden zwischen abschluss der Anforderung und dem Initiieren der Verarbeitung bei der schließenden Anforderung vor. Dadurch wird ein Fenster geöffnet, in dem ein nachfolgender Geöffneter Vorgang auf eine vorhandene SRV_OPEN reduziert werden kann. Das Zeitintervall kann an diese Anforderungen angepasst werden.
Vor dem Aufrufen RxFinalizeNetFCBmuss eine Sperre der FCB-Struktur im exklusiven Modus erworben werden.
Wenn der RecursiveFinalize Parameter FALSEist, schlägt RxFinalizeNetFCB- fehl, wenn es ausstehende Verweise auf den FCB gibt (die OpenCount oder CleanCount Member der FCB-Struktur sind ungleich Null).
Wenn der ForceFinalize Parameter TRUEist, RxFinalizeNetFCB bewirkt, dass das System bei überprüften Builds ASSERTION ausführt.
Nach rekursiver Finalisierung könnte die dem FCB zugeordnete Referenzanzahl höchstens 1 sein, um weitere Finalisierungen zu erhalten. Diese letzte Bezugsanzahl gehört zur Präfixnamenstabelle der NET_ROOT. Die tatsächliche Finalisierung ist in zwei Teile unterteilt:
- wenn die Bezugsanzahl gleich 1 ist oder der ForceFinalize Parameter TRUEwurde, RxFinalizeNetFCB den FCB abgeschlossen.
- Wenn die Referenzanzahl auf Null geht, wird der FCB abgeschlossen und der für den FCB verwendete Speicher wird ebenfalls freigegeben.
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform- | Desktop |
Header- | rxprocs.h (include Rxprocs.h) |
IRQL- | <= APC_LEVEL |