RxFinalizeSrvOpen-Funktion (fcb.h)
RxFinalizeSrvOpen schließt die angegebene SRV_OPEN Struktur ab. Der Anrufer muss über eine exklusive Sperre für den FCB verfügen, die dem SRV_OPEN zugeordnet ist, und entweder eine geteilte oder exklusive Sperre auf der Tischsperre der NET_ROOT, die dem FCB zugeordnet ist.
Syntax
BOOLEAN RxFinalizeSrvOpen(
[out] OUT PSRV_OPEN ThisSrvOpen,
[in] IN BOOLEAN RecursiveFinalize,
[in] IN BOOLEAN ForceFinalize
);
Parameter
[out] ThisSrvOpen
Ein Zeiger auf die SRV_OPEN 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 ForceFinalizeFALSE-ist, muss das NodeReferenceCount-Element der SRV_OPEN Struktur, auf das durch ThisSrvOpen verwiesen wird, 0 sein, damit die SRV_OPEN abgeschlossen werden.
Rückgabewert
RxFinalizeSrvOpen gibt TRUE- bei Erfolg oder FALSE- zurück, wenn die Fertigstellung nicht aufgetreten ist:
Bemerkungen
Die RxFinalizeSrvOpen Routine wird normalerweise nicht von Netzwerk-Miniumleitungstreibern direkt aufgerufen. RDBSS ruft diese Routine intern auf, wenn die Referenzanzahl für die SRV_OPEN auf 1 erhöht wird. RDBSS ruft auch RxFinalizeSrvOpen auf, wenn die RxFinalizeNetFcb Routine aufgerufen wird, wobei die RecursiveFinalize- auf TRUEfestgelegt wird. RDBSS ruft RxFinalizeNetFcb- 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.
Vor dem Aufrufen von RxFinalizeSrvOpenmuss der Anrufer eine exklusive Sperre für den FCB erworben haben, der dem SRV_OPEN zugeordnet ist, und entweder eine freigegebene oder exklusive Sperre auf der Tabellensperre der NET_ROOT erworben haben, die dem FCB zugeordnet ist.
Wenn der RecursiveFinalize Parameter TRUEist, werden RxFinalizeSrvOpen alle FOBX-Strukturen abgeschlossen, die diesem SRV_OPEN durch Aufrufen RxFinalizeNetFobx- mit dem Parameter RecursiveFinalize auf TRUE und den ForceFinalize-Parameter festgelegt.
Wenn das FcbState Mitglied des zugehörigen FCB nicht über das FCB_STATE_ORPHANED Flag festgelegt ist, ruft RxFinalizeSrvCall die MRxForceClosed Routine auf, die vom Netzwerk-Miniumleitung bereitgestellt wird, um die SRV_CALL abzuschließen. Wenn die SRV_CALL Struktur ursprünglich nicht als Teil der Erstellung des FCB zugeordnet wurde, wird auch der Speicher für die SRV_CALL-Struktur freigegeben.
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform- | Desktop |
Header- | fcb.h (einschließlich Mrxfcb.h, Fcb.h) |
IRQL- | <= APC_LEVEL |