Rutina MRxStop
RDBSS llama a la rutinaMRxStop para detener el minidirector de red.
Sintaxis
PMRX_CALLDOWN_CTX MRxStop;
NTSTATUS MRxStop(
_Inout_ PRX_CONTEXT RxContext,
_Inout_ PRDBSS_DEVICE_OBJECT RxDeviceObject
)
{ ... }
Parámetros
RxContext [in, out]
Puntero a la estructura RX_CONTEXT. Este parámetro contiene el IRP que solicitó que se detenga el minidirector de red.
RxDeviceObject [in, out]
Puntero a la estructura RDBSS_DEVICE_OBJECT para este minidirector de red.
Valor devuelto
MRxStop devuelve STATUS_SUCCESS si se ejecuta correctamente o un valor NTSTATUS adecuado, como uno de los siguientes:
Código devuelto | Descripción |
---|---|
STATUS_REDIRECTOR_HAS_OPEN_HANDLES | El minidirector de red tiene identificadores abiertos que impiden que se detenga en este momento. |
STATUS_REDIRECTOR_NOT_STARTED | No se inició el minidirector de red. |
Comentarios
MRxStop detiene y anula la inicialización del minidirector de red desde la perspectiva de RDBSS. Es probable que la detención del minidirector de red requiera liberar asignaciones de memoria y otros recursos del sistema.
Antes de llamar a MRxStop, RDBSS modifica los valores siguientes:
El miembro MajorFunction de la estructura RX_CONTEXT a la que apunta RxContext se establece en la función principal del IRP.
El miembro LowIoContext.ParamsFor.FsCtl.FsControlCode de la estructura RX_CONTEXT a la que apunta RxContext se establece en el código FSCTL del IRP si se trata de una solicitud FSTCL utilizada para detener el minidirector de red.
El miembro StartStopContext.State de la estructura de RDBSS_DEVICE_OBJECT a la que apunta RxDeviceObject se establece en RDBSS_STOP_IN_PROGRESS
El miembro StartStopContext.pStopContext de la estructura RDBSS_DEVICE_OBJECT a la que apunta RxDeviceObject se establece en el parámetro RxContext .
RDBSS llama a MRxStop desde la rutina RxStopMinirdr .
Si MRxStop devuelve STATUS_SUCCESS, la rutina se realizó correctamente. Cualquier otro valor devuelto indica que se produjo un error al detener el minidirector de red.
Si MRxStop devuelve STATUS_SUCCESS, RDBSS establece el estado de RDBSS en RDBSS_STARTABLE. Este estado se almacena en el miembro StartStopContext.State de la estructura de RDBSS_DEVICE_OBJECT a la que apunta RxDeviceObject.
Normalmente, un minidirector de red mantendría una variable interna que indica si se inicia el minidirector de red. Por ejemplo, un minidirector de red podría realizar un seguimiento de cuándo se detiene, se inicia y cuándo está en curso una operación de inicio o una operación de detención.
Requisitos
Plataforma de destino |
Escritorio |
Encabezado |
Mrx.h (incluya Mrx.h) |