Rutina MRxLowIOSubmit[LOWIO_OP_READ]

RDBSS llama a la rutina MRxLowIOSubmit[LOWIO_OP_READ] para emitir una solicitud de lectura al minidirector de red.

Sintaxis

PMRX_CALLDOWN MRxLowIOSubmit[LOWIO_OP_READ];

NTSTATUS MRxLowIOSubmit[LOWIO_OP_READ](
  _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_READ] 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_READ] en respuesta a recibir una solicitud de IRP_MJ_READ .

Antes de llamar a MRxLowIOSubmit[LOWIO_OP_READ], 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_READ.

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

El miembro LowIoContext.ParamsFor.ReadWrite.Key se establece en el valor de IrpSp-Parameters.Read.Key>.

El miembro ParamsFor.ReadWrite.Flags tiene el bit LOWIO_READWRITEFLAG_PAGING_IO se establece en si Irp-Flags> tiene el bit de IRP_PAGING_IO.

El miembro ParamsFor.ReadWrite.Buffer se establece en el búfer de usuario bloqueado para IoReadAccess.

El miembro LowIoContext.ParamsFor.ReadWrite.ByteCount se establece en el valor de IrpSp-Parameters.Read.Length>.

Normalmente, una minidirectora de red implementa una solicitud de lectura 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. La respuesta se obtiene cuando se completa la solicitud de lectura en el servidor. Este es un ejemplo de una operación para la que el minidirector de red puede necesitar registrar un contexto para controlar las cancelaciones iniciadas localmente.

Mientras se procesa la rutina MRxLowIOSubmit[LOWIO_OP_READ], 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_NOTIFY_CHANGE_DIRECTORY]

MRxLowIOSubmit[LOWIO_OP_SHAREDLOCK]

MRxLowIOSubmit[LOWIO_OP_UNLOCK]

MRxLowIOSubmit[LOWIO_OP_UNLOCK_MULTIPLE]

MRxLowIOSubmit[LOWIO_OP_WRITE]

RxReleaseFcbResourceForThreadInMRx