Compartir a través de


Función RxStopMinirdr (mrx.h)

se llama a rxStopMinirdr para detener un minidirector de red que se ha iniciado anteriormente. Como parte de rxStopMinirdr, RDBSS también anulará el registro del controlador minidirector de red como proveedor de convención de nomenclatura universal (UNC) con el proveedor de varios UNC (MUP) si el controlador indica compatibilidad con nombres UNC.

Sintaxis

NTSTATUS RxStopMinirdr(
  [in]  IN PRX_CONTEXT RxContext,
  [out] OUT PBOOLEAN   PostToFsp
);

Parámetros

[in] RxContext

Puntero a la estructura RX_CONTEXT que se va a usar para obtener el objeto de dispositivo y determinar si se trata de un proceso del sistema de archivos.

[out] PostToFsp

Puntero a un valor lógico que se establece en TRUE al devolver si el proceso del sistema de archivos debe publicar la solicitud para su posterior procesamiento.

Valor devuelto

rxStopMinirdr devuelve STATUS_SUCCESS si la secuencia de detención se realizó correctamente o uno de los siguientes valores de error:

Código devuelto Descripción
STATUS_PENDING La secuencia de detención para RDBSS y mini-redireccionadores debe completarse en el contexto del proceso del sistema de archivos. Si la llamada a RxStopMinirdr procede de un proceso diferente (por ejemplo, una solicitud en modo de usuario), la solicitud se publicará para su procesamiento posterior y se devolverá STATUS_PENDING. Este error también se puede devolver si determinados bloqueos RDBSS internos no se pueden adquirir sin esperar.
STATUS_REDIRECTOR_HAS_OPEN_HANDLES El minidirector de red tiene identificadores abiertos y no se puede detener en este momento.
STATUS_REDIRECTOR_STOPPED El minidirector de red ya estaba detenido.

Observaciones

Cuando se emite una solicitud de detención a RDBSS, puede haber solicitudes en curso en RDBSS. Algunas de las solicitudes se pueden cancelar mientras se deben procesar las solicitudes restantes para completarse.

Hay varias estrategias que se pueden emplear para cerrar RDBSS. Actualmente, se emplea el enfoque más conservador. La cancelación de esas operaciones que se pueden cancelar y la operación de detención se mantiene hasta que las solicitudes restantes se ejecutan hasta su finalización.

El de RDBSS RxStopMinirdr se suele llamar como resultado de una solicitud FSCTL o IOCTL de una aplicación o servicio en modo de usuario para detener el minidirector de red, aunque esta llamada también se podría realizar desde el minidirector de red o como parte del procesamiento de apagado por parte del sistema operativo.

Una vez que se emite una llamada a rxStopMinirdr, las únicas operaciones permitidas por RDBSS y que se pasan al minidirector de red son solicitudes para los siguientes paquetes de solicitud de E/S:

  • IRP_MJ_CLEANUP
  • IRP_MJ_CLOSE

La secuencia de detención para RDBSS y el minidirector de red deben completarse en el contexto del proceso del sistema de archivos. Si la llamada a RxStopMinirdr procede de un proceso diferente (por ejemplo, una solicitud en modo de usuario), la solicitud debe publicarse para su procesamiento posterior y se devolverá STATUS_PENDING. En este caso, el identificador de usuario efectivo (el identificador de inicio de sesión) del autor de la llamada se guarda en el miembro FsdUid del parámetro RxContext. Además, si ciertos bloqueos RDBSS internos no se pueden obtener sin esperar, se devuelve STATUS_PENDING y PostToFsp se establece en TRUE. Cuando se devuelve STATUS_PENDING, rxStopMinirdr se publicará para su posterior procesamiento por un proceso del sistema de archivos y completado.

Si un minidirector de red indica compatibilidad con UNC al registrarse con RDBSS (el parámetro Controls de para RxRegisterMinirdr), RxStopMinirdr probará para anular el registro del DeviceName del minidirector de red como proveedor UNC con MUP (llama a FsRtlDeregisterUncProvider en nombre del minidirector de red). RxStopMinirdr también anula el registro del sistema de archivos con el administrador de E/S (llama a IoUnregisterFileSystem) en nombre del minidirector de red).

La rutina RxStopMinirdr llama al minidirector de red MrxStop rutina de devolución de llamada si se implementa esta rutina. Si no quedan FCB activos, se devuelve STATUS_SUCCESS. Si hay algunos FCB activos restantes, se devuelve STATUS_REDIRECTOR_HAS_OPEN_HANDLES. En cualquier caso, el distribuidor de RDBSS para el redirector se activa y el estado interno del minidirector de red en RDBSS se establece en RDBSS_STARTABLE.

Requisitos

Requisito Valor
de la plataforma de destino de Escritorio
encabezado de mrx.h (incluya Mrx.h)
irQL <= APC_LEVEL

Consulte también

FsRtlDeregisterUncProvider

ioUnregisterFileSystem

RxRegisterMinirdr

rxStartMiniRdr

rxUnregisterMinirdr

rxpUnregisterMinirdr