Compartir a través de


Rutina MRxLowIOSubmit[LOWIO_OP_NOTIFY_CHANGE_DIRECTORY]

RDBSS llama a la rutina MRxLowIOSubmit[LOWIO_OP_NOTIFY_CHANGE_DIRECTORY] para emitir una solicitud al minidirector de red para una operación de notificación de cambio de directorio.

Sintaxis

PMRX_CALLDOWN MRxLowIOSubmit[LOWIO_OP_NOTIFY_CHANGE_DIRECTORY];

NTSTATUS MRxLowIOSubmit[LOWIO_OP_NOTIFY_CHANGE_DIRECTORY](
  _Inout_ PRX_CONTEXT RxContext
)
{ ... }

Parámetros

RxContext [in, out]
Puntero a la estructura RX_CONTEXT. Este parámetro contiene el IRP que solicita la operación.

Valor devuelto

MRxLowIOSubmit[LOWIO_OP_NOTIFY_CHANGE_DIRECTORY] devuelve STATUS_SUCCESS si se ejecuta correctamente o un valor NTSTATUS adecuado, como uno de los siguientes:

Código devuelto Descripción
STATUS_FILE_CLOSED

Se adquirió la estructura FCB, pero se ha cerrado la estructura de SRV_OPEN asociada.

STATUS_INSUFFICIENT_RESOURCES

No había recursos suficientes para completar la solicitud.

STATUS_INVALID_DEVICE_REQUEST

Se especificó una solicitud de dispositivo no válida.

STATUS_INVALID_PARAMETER

Se especificó un parámetro no válido en RxContext.

STATUS_NOT_IMPLEMENTED

Esta rutina no se implementa.

STATUS_NOT_SUPPORTED

La solicitud especificada no es compatible con el minidirector de red.

Comentarios

RDBSS llama a MRxLowIOSubmit[LOWIO_OP_NOTIFY_CHANGE_DIRECTORY] en respuesta a recibir una solicitud de IRP_MJ_DIRECTORY_CONTROL .

Antes de llamar a MRxLowIOSubmit[LOWIO_OP_NOTIFY_CHANGE_DIRECTORY], RDBSS modifica los siguientes miembros de la estructura RX_CONTEXT a la que apunta el parámetro RxContext :

El miembro LowIoContext.Operation se establece en LOWIO_OP_NOTIFY_CHANGE_DIRECTORY.

El miembro LowIoContext.ResourceThreadId se establece en el subproceso del proceso que inició la operación en RDBSS.

El miembro LowIoContext.ParamsFor.NotifyChangeDirectory.WatchTree se establece en TRUE si IrpSp-Flags> tiene establecido el bit SL_WATCH_TREE.

El miembro LowIoContext.ParamsFor.NotifyChangeDirectory.CompletionFilter se establece en el valor de IrpSp-Parameters.NotifyDirectory.CompletionFilter>.

El miembro LowIoContext.ParamsFor.NotifyChangeDirectory.NotificationBufferLength se establece en el valor de IrpSp-Parameters.NotifyDirectory.Length>.

El miembro LowIoContext.ParamsFor.NotifyChangeDirectory.pNotificationBuffer se establece en el valor devuelto llamando a MmGetSystemAddressForMdlSafe pasando Irp-MdlAddress> y NormalPagePriority. El búfer de usuario también se sondea y bloquea para el acceso de escritura.

Normalmente, un minidirector de red implementa una operación de notificación de cambio de directorio como una operación asincrónica, ya que puede tardar mucho tiempo. La operación normalmente consiste en enviar una solicitud de red al servidor remoto que solicita la notificación de cambios. La respuesta se obtiene cuando el cambio deseado se ve afectado en el servidor. Este es un ejemplo de una operación para la que el minidirector de red puede necesitar registrar un valor de contexto único para controlar las cancelaciones iniciadas localmente.

Mientras se procesa la rutina MRxLowIOSubmit[LOWIO_OP_NOTIFY_CHANGE_DIRECTORY], se garantiza que el miembro LowIoContext.ResourceThreadId de RX_CONTEXT indique el subproceso del proceso que inició la operación en RDBSS. El miembro LowIoContext.ResourceThreadId se puede usar para liberar la estructura FCB en nombre de otro subproceso. Cuando se completa una rutina asincrónica, se puede liberar la estructura FCB adquirida a partir del subproceso inicial. La estructura FCB se puede liberar llamando a RxReleaseFcbResourceForThreadInMRx.

Requisitos

Plataforma de destino

Escritorio

Encabezado

Mrx.h (incluya Mrx.h)

Consulte también

MRxLowIOSubmit[LOWIO_OP_EXCLUSIVELOCK]

MRxLowIOSubmit[LOWIO_OP_FSCTL]

MRxLowIOSubmit[LOWIO_OP_IOCTL]

MRxLowIOSubmit[LOWIO_OP_READ]

MRxLowIOSubmit[LOWIO_OP_SHAREDLOCK]

MRxLowIOSubmit[LOWIO_OP_UNLOCK]

MRxLowIOSubmit[LOWIO_OP_UNLOCK_MULTIPLE]

MRxLowIOSubmit[LOWIO_OP_WRITE]

RxReleaseFcbResourceForThreadInMRx