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_SHAREDLOCK]
MRxLowIOSubmit[LOWIO_OP_UNLOCK]
MRxLowIOSubmit[LOWIO_OP_UNLOCK_MULTIPLE]