RxFinalizeSrvOpen-Funktion (fcb.h)

RxFinalizeSrvOpen schließt die angegebene SRV_OPEN-Struktur ab. Der Aufrufer muss über eine exklusive Sperre für den FCB verfügen, der dem SRV_OPEN zugeordnet ist, und entweder über eine freigegebene oder eine exklusive Sperre für die Tabellensperre 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 Finalisierung rekursiv durchgeführt werden soll.

[in] ForceFinalize

Der Wert, der angibt, ob die Finalisierung erzwungen werden soll, unabhängig von der Verweisanzahl.

Wenn ForceFinalizeauf FALSE festgelegt ist, muss das NodeReferenceCount-Element der SRV_OPEN Struktur, auf die von ThisSrvOpen verwiesen wird, 0 sein, damit die SRV_OPEN abgeschlossen werden kann.

Rückgabewert

RxFinalizeSrvOpen gibt BEI Erfolg TRUE oder FALSE zurück, wenn die Finalisierung nicht erfolgt ist:

Hinweise

Die RxFinalizeSrvOpen-Routine wird normalerweise nicht direkt von Netzwerk-Miniumleitungstreibern aufgerufen. RDBSS ruft diese Routine intern auf, wenn die Verweisanzahl für die SRV_OPEN auf 1 dekrementiert wird. RDBSS ruft auch RxFinalizeSrvOpen auf, wenn die RxFinalizeNetFcb-Routine aufgerufen wird, wobei RecursiveFinalize auf TRUE festgelegt ist. RDBSS ruft RxFinalizeNetFcb auf, wenn ein E/A-Anforderungspaket für IRP_MJ_CLOSE empfangen wird. Dieser IRP wird normalerweise von RDBSS als Reaktion darauf empfangen, dass eine Anwendung im Benutzermodus einen Vorgang zum Schließen der Datei anfordert. Es ist auch möglich, dass ein anderer Kerneltreiber eine solche IRP ausgibt.

Vor dem Aufrufen von RxFinalizeSrvOpen muss der Aufrufer eine exklusive Sperre für den FCB erworben haben, der dem SRV_OPEN zugeordnet ist, und entweder eine freigegebene oder exklusive Sperre für die Tabellensperre der NET_ROOT, die dem FCB zugeordnet ist.

Wenn der RecursiveFinalize-ParameterTRUE ist, schließt RxFinalizeSrvOpen alle FOBX-Strukturen ab, die diesem SRV_OPEN zugeordnet sind, indem RxFinalizeNetFobx mit dem RecursiveFinalize-Parameter auf TRUE und dem ForceFinalize-Parameter aufgerufen wird.

Wenn für das FcbState-Mitglied des zugeordneten FCB das flag FCB_STATE_ORPHANED nicht festgelegt ist, ruft RxFinalizeSrvCall die vom Netzwerk-Miniumleitung bereitgestellte MRxForceClosed-Routine auf, um die SRV_CALL abzuschließen. Wenn die SRV_CALL-Struktur ursprünglich nicht im Rahmen der Erstellung des FCB zugeordnet wurde, wird auch der Arbeitsspeicher für die SRV_CALL-Struktur freigegeben.

Anforderungen

Anforderung Wert
Zielplattform Desktop
Kopfzeile fcb.h (einschließlich Mrxfcb.h, Fcb.h)
IRQL <= APC_LEVEL

Weitere Informationen

MRxForceClosed

RxCreateNetFcb

RxCreateNetFobx

RxCreateNetRoot

RxCreateSrvCall

RxCreateSrvOpen

RxCreateVNetRoot

RxDereference

RxFinalizeConnection

RxFinalizeNetFcb

RxFinalizeNetFobx

RxFinalizeNetRoot

RxFinalizeSrvCall

RxFinalizeVNetRoot

RxFinishFcbInitialisierung

RxForceFinalizeAllVNetRoots

RxReference

RxSetSrvCallDomainName

RxpDereferenceNetFcb

RxpReferenceNetFcb

Die SRV_OPEN-Struktur