Routine MRxLowIOSubmit[LOWIO_OP_READ]

La routine MRxLowIOSubmit[LOWIO_OP_READ] viene chiamata da RDBSS per inviare una richiesta di lettura al mini-reindirizzamento di rete.

Sintassi

PMRX_CALLDOWN MRxLowIOSubmit[LOWIO_OP_READ];

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

Parametri

RxContext [in, out]
Puntatore alla struttura RX_CONTEXT. Questo parametro contiene l'IRP che richiede l'operazione.

Valore restituito

MRxLowIOSubmit[LOWIO_OP_READ] restituisce STATUS_SUCCESS sull'esito positivo o su un valore NTSTATUS appropriato, ad esempio uno dei seguenti:

Codice restituito Descrizione
STATUS_FILE_CLOSED

La struttura FCB è stata acquisita, ma la struttura SRV_OPEN associata è stata chiusa.

STATUS_INSUFFICIENT_RESOURCES

Per completare la richiesta sono state eseguite risorse insufficienti.

STATUS_INVALID_DEVICE_REQUEST

È stata specificata una richiesta di dispositivo non valida.

STATUS_INVALID_PARAMETER

Un parametro non valido è stato specificato in RxContext.

STATUS_NOT_IMPLEMENTED

Questa routine non viene implementata.

STATUS_NOT_SUPPORTED

La richiesta specificata non è supportata dal mini-redirector di rete.

Commenti

RDBSS chiama MRxLowIOSubmit[LOWIO_OP_READ] in risposta alla ricezione di una richiesta di IRP_MJ_READ .

Prima di chiamare MRxLowIOSubmit[LOWIO_OP_READ], RDBSS modifica i membri seguenti nella struttura RX_CONTEXT puntati al parametro RxContext :

Il membro LowIoContext.Operation è impostato su LOWIO_OP_READ.

Il membro LowIoContext.ResourceThreadId è impostato sul thread del processo che ha avviato l'operazione in RDBSS.

Il membro LowIoContext.ParamsFor.ReadWrite.Key è impostato sul valore di IrpSp-Parameters.Read.Key>.

Il membro ParamsFor.ReadWrite.Flags ha il bit di LOWIO_READWRITEFLAG_PAGING_IO è impostato su se Irp-Flags> ha il bit di IRP_PAGING_IO.

Il membro ParamsFor.ReadWrite.Buffer è impostato sul buffer utente bloccato per IoReadAccess.

Il membro LowIoContext.ParamsFor.ReadWrite.ByteCount è impostato sul valore di IrpSp-Parameters.Read.Length>.

Una richiesta di lettura viene normalmente implementata da un mini-reindirizzamento di rete come operazione asincrona perché può richiedere molto tempo. L'operazione in genere consiste nell'inviare una richiesta di rete al server remoto. La risposta viene ottenuta al termine della richiesta di lettura nel server. Si tratta di un esempio di operazione per cui il mini-reindirizzamento di rete potrebbe dover registrare un contesto per gestire gli annullamenti avviati in locale.

Anche se la routine MRxLowIOSubmit[LOWIO_OP_READ] viene elaborata, il membro LowIoContext.ResourceThreadId di RX_CONTEXT è garantito indicare il thread del processo che ha avviato l'operazione in RDBSS. Il membro LowIoContext.ResourceThreadId può essere usato per rilasciare la struttura FCB per conto di un altro thread. Al termine di una routine asincrona, è possibile rilasciare la struttura FCB acquisita dal thread iniziale. La struttura FCB può essere rilasciata chiamando RxReleaseFcbResourceForThreadInMRx.

Requisiti

Piattaforma di destinazione

Desktop

Intestazione

Mrx.h (include Mrx.h)

Vedi anche

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