Rutina MRxLowIOSubmit[LOWIO_OP_WRITE]
RDBSS llama a la rutina MRxLowIOSubmit[LOWIO_OP_WRITE] para emitir una solicitud de escritura al minidirector de red.
Sintaxis
PMRX_CALLDOWN MRxLowIOSubmit[LOWIO_OP_WRITE];
NTSTATUS MRxLowIOSubmit[LOWIO_OP_WRITE](
_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_WRITE] 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_WRITE] en respuesta a la recepción de una solicitud de IRP_MJ_WRITE .
Antes de llamar a MRxLowIOSubmit[LOWIO_OP_WRITE], 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_WRITE.
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 IoWriteAccess.
El miembro LowIoContext.ParamsFor.ReadWrite.ByteCount se establece en el valor de IrpSp-Parameters.Write.Length>.
Normalmente, una minidirectora de red implementa una solicitud de escritura 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 escritura 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_WRITE], 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]