Función RxFinalizeConnection (rxprocs.h)

RxFinalizeConnection elimina una conexión a un recurso compartido. Los archivos abiertos en la conexión se cierran en función del nivel de fuerza especificado. El minidirector de red podría optar por mantener abierta la conexión de transporte por motivos de rendimiento, a menos que se especifique alguna opción para forzar un cierre de conexión.

Sintaxis

NTSTATUS RxFinalizeConnection(
  IN OUT PNET_ROOT   NetRoot,
  IN OUT PV_NET_ROOT VNetRoot,
  IN LOGICAL         ForceFilesClosed
);

Parámetros

NetRoot

[in, out] Puntero a la estructura NET_ROOT que se está finalizando.

VNetRoot

Puntero a la estructura V_NET_ROOT que se está finalizando.

ForceFilesClosed

Marca que controla el comportamiento de la rutina RxFinalizeConnection . La marca puede ser uno de los siguientes valores:

VERDAD

RxFinalizeConnection se realiza correctamente independientemente de lo que incluso si los archivos huérfanos y las solicitudes de IRP_MN_NOTIFY_CHANGE_DIRECTORY están abiertas. La opción obliga a cerrar estos archivos huérfanos.

FALSO

RxFinalizeConnection produce un error si los archivos o las notificaciones de cambio están abiertas.

0xff

RxFinalizeConnection quita la referencia adicional en la estructura de V_NET_ROOT debido a la solicitud de adición de conexión, pero de lo contrario actúa como FALSE. RxFinalizeConnection produce un error si los archivos o las notificaciones de cambio están abiertas.

Valor devuelto

RxFinalizeConnection devuelve STATUS_SUCCESS si se realiza correctamente o uno de los siguientes códigos de error en caso de error:

Código devuelto Descripción
STATUS_CANCELLED
El miembro Flags de la estructura RX_CONTEXT indica que se canceló el IRP.
STATUS_CONNECTION_IN_USE
La conexión sigue en uso.
STATUS_FILES_OPEN
El archivo estaba abierto, por lo que no se debe eliminar la conexión remota.
STATUS_LOCK_NOT_GRANTED
Bloqueo exclusivo en el asociado

Comentarios

RxFinalizeConnection normalmente lo llama un controlador minidirector de red en respuesta a la recepción de una solicitud IOCTL personalizada del modo de usuario. Por ejemplo, un usuario podría ejecutar desde la línea de comandos un "NET USE x: /d" para eliminar un recurso compartido. Esta solicitud se asignaría a través del archivo DLL del proveedor de red proporcionado por el minidirector de red a una solicitud IOCTL personalizada enviada al controlador de kernel minidirector de red que llamaría a la rutina RxFinalizeConnection para eliminar la conexión.

RxFinalizeConnection cancela todas las solicitudes pendientes de una estructura de V_NET_ROOT determinada. Estas estructuras de V_NET_ROOT se crean y eliminan independientemente de los archivos que se abren y manipulan en ellas. Por lo tanto, es imperativo que cuando se intente una operación de eliminación, se cancelan todas las solicitudes pendientes.

Requisitos

Requisito Value
Plataforma de destino Escritorio
Encabezado rxprocs.h (incluya Rxprocs.h)
IRQL <= APC_LEVEL

Consulte también

RxCreateNetFcb

RxCreateNetFobx

RxCreateNetRoot

RxCreateSrvCall

RxCreateSrvOpen

RxCreateVNetRoot

RxDereference

RxFinalizeNetFcb

RxFinalizeNetFobx

RxFinalizeNetRoot

RxFinalizeSrvCall

RxFinalizeSrvOpen

RxFinalizeVNetRoot

RxFinishFcbInitialization

RxForceFinalizeAllVNetRoots

RxReference

RxSetSrvCallDomainName

RxpDereferenceNetFcb

RxpReferenceNetFcb

Estructura NET_ROOT

Estructura de V_NET_ROOT