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 |