Partager via


Fonction RxFinalizeSrvOpen (fcb.h)

RxFinalizeSrvOpen finalise la structure de SRV_OPEN donnée. L’appelant doit disposer d’un verrou exclusif sur le fcb associé au SRV_OPEN et d’un verrou partagé ou exclusif sur le verrou de table du NET_ROOT associé au fcb.

Syntaxe

BOOLEAN RxFinalizeSrvOpen(
  [out] OUT PSRV_OPEN ThisSrvOpen,
  [in]  IN BOOLEAN    RecursiveFinalize,
  [in]  IN BOOLEAN    ForceFinalize
);

Paramètres

[out] ThisSrvOpen

Pointeur vers la structure SRV_OPEN à finaliser.

[in] RecursiveFinalize

Valeur indiquant si la finalisation doit être effectuée de manière récursive.

[in] ForceFinalize

Valeur indiquant si la finalisation doit être forcée, quel que soit le nombre de références.

Si ForceFinalize a la valeur FALSE, le membre NodeReferenceCount de la structure SRV_OPEN pointée par ThisSrvOpen doit être 0 pour que le SRV_OPEN soit finalisé.

Valeur retournée

RxFinalizeSrvOpen retourne TRUE en cas de réussite ou FALSE si la finalisation n’a pas eu lieu :

Remarques

La routine RxFinalizeSrvOpen n’est normalement pas appelée directement par les pilotes de mini-redirecteur réseau. RDBSS appelle cette routine en interne lorsque le nombre de références sur le SRV_OPEN est décrémenté à 1. RDBSS appelle également RxFinalizeSrvOpen lorsque la routine RxFinalizeNetFcb est appelée avec recursiveFinalize définie sur TRUE. RDBSS appelle RxFinalizeNetFcb lorsqu’un paquet de demande d’E/S est reçu pour IRP_MJ_CLOSE. Ce IRP est normalement reçu par RDBSS en réponse à une application en mode utilisateur demandant une opération de fermeture de fichier. Il est également possible pour un autre pilote de noyau d’émettre un tel IRP.

Avant d’appeler RxFinalizeSrvOpen, l’appelant doit avoir acquis un verrou exclusif sur le fcb associé au SRV_OPEN et avoir acquis un verrou partagé ou exclusif sur le verrou de table du NET_ROOT associé au fcb.

Si le paramètre RecursiveFinalize a la valeur TRUE, RxFinalizeSrvOpen finalise toutes les structures FOBX associées à ce SRV_OPEN en appelant RxFinalizeNetFobx avec le paramètre RecursiveFinalize défini sur TRUE et le paramètre ForceFinalize .

Si le membre FcbState du fcb associé n’a pas l’indicateur FCB_STATE_ORPHANED défini, RxFinalizeSrvCall appelle la routine MRxForceClosed fournie par le mini-redirecteur réseau pour finaliser la SRV_CALL. Si la structure SRV_CALL n’a pas été initialement allouée dans le cadre de la création de la structure FCB, la mémoire de la structure SRV_CALL est également libérée.

Configuration requise

Condition requise Valeur
Plateforme cible Desktop (Expérience utilisateur)
En-tête fcb.h (inclure Mrxfcb.h, Fcb.h)
IRQL <= APC_LEVEL

Voir aussi

MRxForceClosed

RxCreateNetFcb

RxCreateNetFobx

RxCreateNetRoot

RxCreateSrvCall

RxCreateSrvOpen

RxCreateVNetRoot

RxDereference

RxFinalizeConnection

RxFinalizeNetFcb

RxFinalizeNetFobx

RxFinalizeNetRoot

RxFinalizeSrvCall

RxFinalizeVNetRoot

RxFinishFcbInitialization

RxForceFinalizeAllVNetRoots

RxReference

RxSetSrvCallDomainName

RxpDereferenceNetFcb

RxpReferenceNetFcb

The SRV_OPEN Structure