Compartir a través de


Función RxFinalizeSrvOpen (fcb.h)

RxFinalizeSrvOpen finaliza la estructura de SRV_OPEN especificada. El autor de la llamada debe tener un bloqueo exclusivo en el FCB asociado al SRV_OPEN y un bloqueo compartido o exclusivo en el bloqueo de tabla del NET_ROOT asociado con el FCB.

Sintaxis

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

Parámetros

[out] ThisSrvOpen

Puntero a la estructura SRV_OPEN que se va a finalizar.

[in] RecursiveFinalize

Valor que indica si la finalización se debe realizar de forma recursiva.

[in] ForceFinalize

Valor que indica si se debe forzar la finalización, independientemente del recuento de referencias.

Si ForceFinalize es FALSE, el miembro NodeReferenceCount de la estructura de SRV_OPEN a la que apunta ThisSrvOpen debe ser 0 para que se finalice el SRV_OPEN.

Valor devuelto

RxFinalizeSrvOpen devuelve TRUE si se ha realizado correctamente o FALSE si no se ha producido la finalización:

Comentarios

La rutina RxFinalizeSrvOpen normalmente no la llaman los controladores de minidirector de red directamente. RDBSS llama a esta rutina internamente cuando el recuento de referencias del SRV_OPEN se reduce a 1. RDBSS también llama a RxFinalizeSrvOpen cuando se llama a la rutina RxFinalizeNetFcb con recursiveFinalize establecido en TRUE. RDBSS llama a RxFinalizeNetFcb cuando se recibe un paquete de solicitud de E/S para IRP_MJ_CLOSE. RDBSS recibe normalmente este IRP en respuesta a una aplicación en modo de usuario que solicita una operación de cierre de archivos. También es posible que otro controlador de kernel emita este tipo de IRP.

Antes de llamar a RxFinalizeSrvOpen, el autor de la llamada debe haber adquirido un bloqueo exclusivo en el FCB asociado con el SRV_OPEN y ha adquirido un bloqueo compartido o exclusivo en el bloqueo de tabla del NET_ROOT asociado con el FCB.

Si el parámetro RecursiveFinalize es TRUE, RxFinalizeSrvOpen finalizará las estructuras FOBX asociadas a esta SRV_OPEN llamando a RxFinalizeNetFobx con el parámetro RecursiveFinalize establecido en TRUE y el parámetro ForceFinalize .

Si el miembro FcbState del FCB asociado no tiene establecida la marca de FCB_STATE_ORPHANED, RxFinalizeSrvCall llamará a la rutina MRxForceClosed proporcionada por el minidirector de red para finalizar el SRV_CALL. Si la estructura de SRV_CALL no se asignó originalmente como parte de la creación del FCB, también se liberará la memoria de la estructura de SRV_CALL.

Requisitos

Requisito Value
Plataforma de destino Escritorio
Encabezado fcb.h (incluya Mrxfcb.h, Fcb.h)
IRQL <= APC_LEVEL

Consulte también

MRxForceClosed

RxCreateNetFcb

RxCreateNetFobx

RxCreateNetRoot

RxCreateSrvCall

RxCreateSrvOpen

RxCreateVNetRoot

RxDereference

RxFinalizeConnection

RxFinalizeNetFcb

RxFinalizeNetFobx

RxFinalizeNetRoot

RxFinalizeSrvCall

RxFinalizeVNetRoot

RxFinishFcbInitialization

RxForceFinalizeAllVNetRoots

RxReference

RxSetSrvCallDomainName

RxpDereferenceNetFcb

RxpReferenceNetFcb

Estructura de SRV_OPEN