Freigeben über


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

Siehe auch

MRxForceClosed

RxCreateNetFcb

RxCreateNetFobx-

RxCreateNetRoot-

RxCreateSrvCall-

RxCreateSrvOpen

RxCreateVNetRoot-

RxDereference-

RxFinalizeConnection-

RxFinalizeNetFcb

RxFinalizeNetFobx-

RxFinalizeNetRoot-

RxFinalizeSrvCall

RxFinalizeVNetRoot-

RxFinishFcbInitialization

RxForceFinalizeAllVNetRoots

RxReference-

RxSetSrvCallDomainName

RxpDereferenceNetFcb

RxpReferenceNetFcb

SRV_OPEN Struktur